db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Jefferson (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JDO-143) ERROR 23503: INSERT on table 'COLLECTION_OF_SIMPLE_CLASS3' caused a violation of foreign key constraint
Date Sat, 24 Sep 2005 07:44:28 GMT
    [ http://issues.apache.org/jira/browse/JDO-143?page=comments#action_12330360 ] 

Andy Jefferson commented on JDO-143:
------------------------------------

Hard to follow the TCK test in terms of the data in each of the collections so I'll post my
findings here so someone who understands the data that is trying to be persisted can comment.
There are 2 fields of note in the CollectionCollections class : "CollectionOfSimpleClass42",
and "CollectionOfSimpleClass3". 
The former has embedded elements and the latter is unembedded, just having a FK to the SimpleClass
table. Debugging suggests that both of these collections contains the same element(s). It's
being encountered as part of the CollectionOfSimpleClass42 field and has a StateManager assigned
(as an embedded object) and is persisted (into the join table). When JPOX gets around to persisting
the CollectionOfSimpleClass3 field JPOX finds the already persistent SimpleClass element and
so think it's ok to insert the join table row - hence the FK fails.

Do these collections contain the same elements ? If so what are you expecting a JDO impl to
do in this situation ? Make a copy of the PC object and persist that ? If so, please provide
a reference to the section of the JDO2 spec defining such behaviour.

> ERROR 23503: INSERT on table 'COLLECTION_OF_SIMPLE_CLASS3' caused a violation of foreign
key constraint
> -------------------------------------------------------------------------------------------------------
>
>          Key: JDO-143
>          URL: http://issues.apache.org/jira/browse/JDO-143
>      Project: JDO
>         Type: Bug
>   Components: tck20
>     Reporter: Michelle Caisse
>     Assignee: Erik Bengtson

>
>     [java] 1) test(org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections)javax.jdo.JDODataStoreException:
Add request failed : INSERT INTO applicationidentity0.COLLECTION_OF_SIMPLE_CLASS3 (IDENTIFIER,ALLOW_DUPLICATES,SIMPCLSREF)
VALUES (?,?,?)
>     [java]      at org.jpox.store.rdbms.scostore.NormalSetStore.add(NormalSetStore.java:672)
>     [java]      at org.jpox.sco.SCOUtils.updateStoreWithCollection(SCOUtils.java:489)
>     [java]      at org.jpox.store.mapping.container.CollectionMapping.postUpdate(CollectionMapping.java:279)
>     [java]      at org.jpox.store.rdbms.request.UpdateRequest.execute(UpdateRequest.java:266)
>     [java]      at org.jpox.store.rdbms.table.ClassTable.update(ClassTable.java:1838)
>     [java]      at org.jpox.store.StoreManager.update(StoreManager.java:782)
>     [java]      at org.jpox.state.StateManagerImpl.flush(StateManagerImpl.java:4298)
>     [java]      at org.jpox.state.StateManagerImpl.runReachability(StateManagerImpl.java:3102)
>     [java]      at org.jpox.AbstractPersistenceManager.preCommit(AbstractPersistenceManager.java:3049)
>     [java]      at org.jpox.NonmanagedTransaction.commit(NonmanagedTransaction.java:419)
>     [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.runTest(TestCollectionCollections.java:97)
>     [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.test(TestCollectionCollections.java:69)
>     [java]      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     [java]      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     [java]      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     [java]      at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
>     [java]      at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:115)
>     [java]      at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:93)
>     [java] NestedThrowablesStackTrace:
>     [java] ERROR 23503: INSERT on table 'COLLECTION_OF_SIMPLE_CLASS3' caused a violation
of foreign key constraint SQL050921005031671' for key (1127341751473).  The statement has
been rolled back.
>     [java]      at org.apache.derby.iapi.error.StandardException.newException(Unknown
Source)
>     [java]      at org.apache.derby.impl.sql.execute.ForeignKeyRIChecker.doCheck(Unknown
Source)
>     [java]      at org.apache.derby.impl.sql.execute.GenericRIChecker.doCheck(Unknown
Source)
>     [java]      at org.apache.derby.impl.sql.execute.RISetChecker.doFKCheck(Unknown Source)
>     [java]      at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown
Source)
>     [java]      at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
>     [java]      at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
>     [java]      at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
>     [java]      at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown
Source)
>     [java]      at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown
Source)
>     [java]      at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
>     [java]      at org.jpox.store.rdbms.scostore.BaseContainerStore.executeUpdate(BaseContainerStore.java:97)
>     [java]      at org.jpox.store.rdbms.scostore.NormalSetStore.add(NormalSetStore.java:654)
>     [java]      at org.jpox.sco.SCOUtils.updateStoreWithCollection(SCOUtils.java:489)
>     [java]      at org.jpox.store.mapping.container.CollectionMapping.postUpdate(CollectionMapping.java:279)
>     [java]      at org.jpox.store.rdbms.request.UpdateRequest.execute(UpdateRequest.java:266)
>     [java]      at org.jpox.store.rdbms.table.ClassTable.update(ClassTable.java:1838)
>     [java]      at org.jpox.store.StoreManager.update(StoreManager.java:782)
>     [java]      at org.jpox.state.StateManagerImpl.flush(StateManagerImpl.java:4298)
>     [java]      at org.jpox.state.StateManagerImpl.runReachability(StateManagerImpl.java:3102)
>     [java]      at org.jpox.AbstractPersistenceManager.preCommit(AbstractPersistenceManager.java:3049)
>     [java]      at org.jpox.NonmanagedTransaction.commit(NonmanagedTransaction.java:419)
>     [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.runTest(TestCollectionCollections.java:97)
>     [java]      at org.apache.jdo.tck.models.fieldtypes.TestCollectionCollections.test(TestCollectionCollections.java:69)
>     [java]      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     [java]      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     [java]      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     [java]      at org.apache.jdo.tck.JDO_Test.runBare(JDO_Test.java:204)
>     [java]      at org.apache.jdo.tck.util.BatchTestRunner.start(BatchTestRunner.java:115)
>     [java]      at org.apache.jdo.tck.util.BatchTestRunner.main(BatchTestRunner.java:93)
> Possibly due to a misordering of inserts required for this operation?

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message