[
https://issues.apache.org/jira/browse/OPENJPA-2373?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13649374#comment-13649374
]
Albert Lee commented on OPENJPA-2373:
-------------------------------------
TestMapsIdWithAutoGeneratedKey was introduced in r1469652. This passes against
Derby but failed with Oracle withe the following error. Based on the symptom,
this may be related to the error introduced by OPENJPA-2328 and OPENJPA-2378
73 <testcase time="1.374"
classname="org.apache.openjpa.persistence.inheritance.jointable.onetomany.TestMapsIdWithAutoGeneratedKey"
name="testPersistShirtWithPart">
74 <error message="The transaction has been rolled back. See the
nested exceptions for details on the errors that occurred."
type="<openjpa-2.3.0-SNAPSHOT-r422266"><openjpa-2.3.0-SN
APSHOT-r422266:1469652 fatal store error>
org.apache.openjpa.persistence.RollbackException: The transaction has been
rolled back. See the nested exceptions for details on the errors tha t
occurred.
75 FailedObject: org.apache.openjpa.persistence.common.apps.Shirt@426b51d8
76 at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:594)
77 at
org.apache.openjpa.persistence.inheritance.jointable.onetomany.TestMapsIdWithAutoGeneratedKey.testPersistShirtWithPart(TestMapsIdWithAutoGeneratedKey.java:94)
78 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
......
108 Caused by: <openjpa-2.3.0-SNAPSHOT-r422266:1469652 fatal general
error> org.apache.openjpa.persistence.PersistenceException: The transaction
has been rolled back. See the nested exce ptions for details on the
errors that occurred.
109 FailedObject: org.apache.openjpa.persistence.common.apps.Shirt@426b51d8
110 at
org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2366)
111 at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2203)
112 at
org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2101)
113 at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2019)
114 at
org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
115 at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1524)
116 at
org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:933)
117 at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:570)
118 ... 31 more
119 Caused by: <openjpa-2.3.0-SNAPSHOT-r422266:1469652 fatal store
error> org.apache.openjpa.persistence.EntityExistsException: ORA-01400:
cannot insert NULL into ("SCOTT"."
;MPTZZT"."ID_TXE")
120 {prepstmnt 259984788 INSERT INTO MPTZZT (NA_TXE) VALUES (?)}
[code=1400, state=23000]
121 FailedObject: org.apache.openjpa.persistence.common.apps.Shirt@426b51d8
122 at
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4942)
123 at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4917)
124 at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:136)
125 at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:78)
126 at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:144)
127 at
org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:79)
128 at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:100)
129 at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:88)
130 at
org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:357)
131 at
org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flushGraph(ConstraintUpdateManager.java:349)
132 at
org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:97)
133 at
org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
134 at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:105)
135 at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:78)
136 at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:732)
137 at
org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:131)
138 ... 38 more
139 Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException:
ORA-01400: cannot insert NULL into
("SCOTT"."MPTZZT"."ID_TXE")
140 {prepstmnt 259984788 INSERT INTO MPTZZT (NA_TXE) VALUES (?)}
[code=1400, state=23000]
141 at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:219)
142 at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:195)
143 at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$1000(LoggingConnectionDecorator.java:59)
144 at
org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:1134)
145 at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:275)
146 at
org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:275)
147 at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.executeUpdate(PreparedStatementManagerImpl.java:268)
148 at
org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:119)
149 ... 49 more
> MapsId in a Child entity to a Parent entity using auto-assigned identity
> fails with duplicte INSERT SQL
> --------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-2373
> URL: https://issues.apache.org/jira/browse/OPENJPA-2373
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 2.0.0, 2.0.1, 2.1.1, 2.2.1
> Reporter: Pinaki Poddar
> Assignee: Pinaki Poddar
> Fix For: 2.3.0
>
>
> A MapsId annotation in entity C (child) annotates a field p of type P
> (parent). P uses auto-generated identity.
> P-C is a bidirectional parent-child relationship.
>
> During flush sequence, A row is created for P and flushed for the database to
> assign an identity. When C is flushed, it wrongly creates a row for P again
> while handling the field p that points to parent.
> Of course, the commit breaks with a DuplicateKeyException on P's table.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira