Hi,

On Tue, 21 Oct 2003 17:13:20 -0400, Bonnie MacKellar <[EMAIL PROTECTED]> wrote:

I tried your suggestions, but still get the error.
And if I remove the executeBatch call, I also get a
ConnectionManager is not in Transaction exception
when the transaction is committed.

hmm, this should not happen.

Please try to set
broker.serviceConnectionManager.setBachMode(true);
before start the tx. Because the connection was
associated with PB instance on PB.beginTx, so setting
batch-mode after this may cause problems.

I currently made some tests against sapDB
without any problems (using CVS head)

regards,
Armin

Is there a way to find out what changes might have
been made? Have there been bug reports?

I copied my original code from
org.apache.ojb.broker.BatchModeTest, by the
way, which is where I got the executeBatch call.
This is what is shown in that code.

And the javadoc definitely implies that
you can set the batch mode at runtime.

thanks,


-----Original Message-----
From: Armin Waibel [mailto:[EMAIL PROTECTED]
Sent: Tuesday, October 21, 2003 4:58 PM
To: OJB Users List
Subject: Re: problems with batch-mode=true


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.PreparedStatementInvocationHa
ndler.doExec
>> ute(Unknown Source)
>>        at
>>
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHa
ndler.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.execut
eBatch(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.execut
eBatch(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]





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



Reply via email to