Hi Bonnie,

Hope I can sheed some light on the 'problem'.

does this mean that you can't set batch mode to "true"
if it is set to "false" in repository_database.xml?
yep!
I think this behaviour has a big advantage, because it is
easy to disable batch-mode by set batch-mode false in
repository (if we don't have a bug in handling bach-mode ;-))

...
I am trying to insert records in batch mode. Perhaps I don't understand
how this
works. Here is my test code to insert 100 customers :


Assume you have set batch-mode 'true' in repository file. Then you have to enable batch mode for the use PB instance. Try this:

        ConnectionManagerIF conMan = broker.serviceConnectionManager();
        try
        {
            broker.beginTransaction();

==>> broker.connectionManager.setBachMode(true); now the PB instance is running in batch-mode till you set false or the PB instance was closed.
            for (int i = 0; i < 100; i++)
            {

                CustomerInterface customer = new Customer();
                customer.setCustomerNumber("100" + i);
                customer.setFirstName("Big");
                customer.setLastName("Customer");
                customer.setCustomerName("BadCorporation");
                customer.setDeleteTag(Boolean.FALSE);

                broker.store(customer);
            }

conMan.executeBatch();
think you don't need executeBatch before commit, this will be done
at commit.
            broker.commitTransaction();
              }


If you still have problems with batch-mode try CVS-head. I think Oleg has checked in some changes (but I'm not sure)

regards,
Armin

When I run this with batch-mode="false", it works perfectly, although it
generates a SELECT and a
DELETE for every INSERT (which seems rather inefficient). I imagine this
has something to do with
an M:N nondecomposed relationship which involves Customer records.

When I run this with batch-mode="true", it fails. I get the following
exception
java.lang.IllegalArgumentException: object is not an instance of declaring
class
at java.lang.reflect.Method.invoke(Native Method)
at
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.doExec
ute(Unknown Source)
at
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.invoke
(Unknown Source)
at $Proxy0.doExecute(Unknown Source)
at
org.apache.ojb.broker.util.batch.BatchConnection.executeBatch(Unknown
Source)
at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.executeBatch(Unkno
wn Source)
at
com.mobius.activebill.dbmigrationutils.CustomerMigration.main(CustomerMigr
ation.java:68)
rethrown as org.apache.ojb.broker.accesslayer.OJBBatchUpdateException:
object is not an instance of declaring class
at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.executeBatch(Unkno
wn Source)
at
com.mobius.activebill.dbmigrationutils.CustomerMigration.main(CustomerMigr
ation.java:68)
when conMan.executeBatch() is called.


Am I doing something wrong here? I am using rc4, with MSSqlServer and
JSQLConnect.

thanks,
Bonnie MacKellar




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to