You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Ro...@putnam.com on 2003/05/06 18:49:43 UTC

Problem with m:n relationship switching from rc2 to rc3





Hey,
I just switched from rc2 to rc3 and i have issues with m:n relationship
persistense.  It worked in the previous version.
I have "object1" that has a collection of "object2" and "object2" has a
collection of "object1".
So what I am doing in my application is I create object1 and object2 and
add them to the corresponding collections.
When I am trying to commit the transaction exception is thrown.. stack is
at the end of the message.
So from the stack I can see that OJB is trying to create a link in the
indirection table twice and fails. I noticed that OJB runs all SQL
statements in a batch, which I dont think was the case in the previous
version.  So does it check if the link is already in the table?
All my collections are proxy collections. Let me know if you need more
information. I would appreciate any help, cause i am really stuck.

Thanks,
Roman


[org.apache.ojb.odmg.ObjectEnvelopeTable] ERROR: Commit on object level
failed for tx org.apache.ojb.odmg.TransactionImpl@d0d12e
java.sql.BatchUpdateException: Invalid argument value: Duplicate entry
'1-1' for key 1
Invalid argument value: Duplicate entry '1-1' for key 1
      at com.mysql.jdbc.jdbc2.PreparedStatement.executeBatch(Unknown
Source)
[org.apache.ojb.odmg.TransactionImpl] ERROR: Could not prepare for commit:
null
      at
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.doExecute(PreparedStatementInvocationHandler.java:197)
      at
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.invoke(PreparedStatementInvocationHandler.java:140)
      at $Proxy0.doExecute(Unknown Source)
      at
org.apache.ojb.broker.util.batch.BatchConnection.executeBatch(BatchConnection.java:298)
      at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.executeBatch(ConnectionManagerImpl.java:330)
      at
org.apache.ojb.odmg.ObjectEnvelopeTable.commit(ObjectEnvelopeTable.java:192)
      at
org.apache.ojb.odmg.TransactionImpl.doCommitOnObjects(TransactionImpl.java:342)
      at
org.apache.ojb.odmg.TransactionImpl.prepare(TransactionImpl.java:595)
      at
org.apache.ojb.odmg.TransactionImpl.commit(TransactionImpl.java:545)
      at
com.putnaminv.common.logging.session.Session.commitTransaction(Session.java:61)
      at
com.putnaminv.common.logging.instrument.JarModifier.main(JarModifier.java:92)
rethrown as org.apache.ojb.broker.accesslayer.OJBBatchUpdateException:
Invalid argument value: Duplicate entry '1-1' for key 1
      at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.executeBatch(ConnectionManagerImpl.java:334)
      at
org.apache.ojb.odmg.ObjectEnvelopeTable.commit(ObjectEnvelopeTable.java:192)
      at
org.apache.ojb.odmg.TransactionImpl.doCommitOnObjects(TransactionImpl.java:342)
      at
org.apache.ojb.odmg.TransactionImpl.prepare(TransactionImpl.java:595)
      at
org.apache.ojb.odmg.TransactionImpl.commit(TransactionImpl.java:545)
      at
com.putnaminv.common.logging.session.Session.commitTransaction(Session.java:61)
      at
com.putnaminv.common.logging.instrument.JarModifier.main(JarModifier.java:92)
Caused by: java.sql.BatchUpdateException: Invalid argument value: Duplicate
entry '1-1' for key 1
      at com.mysql.jdbc.jdbc2.PreparedStatement.executeBatch(Unknown
Source)
      at
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.doExecute(PreparedStatementInvocationHandler.java:197)
      at
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.invoke(PreparedStatementInvocationHandler.java:140)
      at $Proxy0.doExecute(Unknown Source)
      at
org.apache.ojb.broker.util.batch.BatchConnection.executeBatch(BatchConnection.java:298)
      at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.executeBatch(ConnectionManagerImpl.java:330)
      ... 6 more
[org.apache.ojb.broker.accesslayer.ConnectionManagerImpl] INFO: Rollback
was called, do rollback on current connection
com.mysql.jdbc.jdbc2.Connection@98f192
[org.apache.ojb.broker.accesslayer.ConnectionManagerImpl] ERROR: Rollback
on the underlying connection failed
General error: Warning:  Some non-transactional changed tables couldn't be
rolled back
java.sql.SQLException: General error: Warning:  Some non-transactional
changed tables couldn't be rolled back
      at com.mysql.jdbc.MysqlIO.sendCommand(Unknown Source)
      at com.mysql.jdbc.MysqlIO.sqlQueryDirect(Unknown Source)
      at com.mysql.jdbc.MysqlIO.sqlQuery(Unknown Source)
      at com.mysql.jdbc.Connection.execSQL(Unknown Source)
      at com.mysql.jdbc.Connection.execSQL(Unknown Source)
      at com.mysql.jdbc.Connection.rollback(Unknown Source)
      at
org.apache.ojb.broker.util.batch.BatchConnection.rollback(BatchConnection.java:343)
      at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.localRollback(ConnectionManagerImpl.java:241)
      at
org.apache.ojb.broker.core.PersistenceBrokerImpl.abortTransaction(PersistenceBrokerImpl.java:346)
      at
org.apache.ojb.broker.core.PersistenceBrokerImpl.close(PersistenceBrokerImpl.java:307)
      at
org.apache.ojb.broker.core.DelegatingPersistenceBroker.close(DelegatingPersistenceBroker.java:135)
      at
org.apache.ojb.broker.core.PoolablePersistenceBroker.close(PoolablePersistenceBroker.java:28)
      at
org.apache.ojb.odmg.TransactionImpl.doClose(TransactionImpl.java:440)
      at
org.apache.ojb.odmg.TransactionImpl.commit(TransactionImpl.java:568)
      at
com.putnaminv.common.logging.session.Session.commitTransaction(Session.java:61)
      at
com.putnaminv.common.logging.instrument.JarModifier.main(JarModifier.java:92)
org.apache.ojb.odmg.TransactionAbortedExceptionOJB
      at
org.apache.ojb.odmg.ObjectEnvelopeTable.commit(ObjectEnvelopeTable.java:211)
      at
org.apache.ojb.odmg.TransactionImpl.doCommitOnObjects(TransactionImpl.java:342)
      at
org.apache.ojb.odmg.TransactionImpl.prepare(TransactionImpl.java:595)
      at
org.apache.ojb.odmg.TransactionImpl.commit(TransactionImpl.java:545)
      at
com.putnaminv.common.logging.session.Session.commitTransaction(Session.java:61)
      at
com.putnaminv.common.logging.instrument.JarModifier.main(JarModifier.java:92)
Caused by: org.apache.ojb.broker.accesslayer.OJBBatchUpdateException:
Invalid argument value: Duplicate entry '1-1' for key 1
      at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.executeBatch(ConnectionManagerImpl.java:334)
      at
org.apache.ojb.odmg.ObjectEnvelopeTable.commit(ObjectEnvelopeTable.java:192)
      ... 5 more
Caused by: java.sql.BatchUpdateException: Invalid argument value: Duplicate
entry '1-1' for key 1
      at com.mysql.jdbc.jdbc2.PreparedStatement.executeBatch(Unknown
Source)
      at
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.doExecute(PreparedStatementInvocationHandler.java:197)
      at
org.apache.ojb.broker.util.batch.PreparedStatementInvocationHandler.invoke(PreparedStatementInvocationHandler.java:140)
      at $Proxy0.doExecute(Unknown Source)
      at
org.apache.ojb.broker.util.batch.BatchConnection.executeBatch(BatchConnection.java:298)
      at
org.apache.ojb.broker.accesslayer.ConnectionManagerImpl.executeBatch(ConnectionManagerImpl.java:330)
      ... 6 more