Alexander Budarov created OPENJPA-2594:
------------------------------------------
Summary: Deleting an object with embedded field causes exception
under some circumstances
Key: OPENJPA-2594
URL: https://issues.apache.org/jira/browse/OPENJPA-2594
Project: OpenJPA
Issue Type: Bug
Affects Versions: 2.3.0
Reporter: Alexander Budarov
Priority: Minor
Stacktrace:
{code}
<openjpa-2.3.0-r422266:1540826 fatal store error>
org.apache.openjpa.persistence.RollbackException: The transaction has been
rolled back. See the nested exceptions for details on the errors that occurred.
at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:594)
at
testcase.DeleteObjectWithEmbeddedTest.testDeletion(DeleteObjectWithEmbeddedTest.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at
org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:84)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at
com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
Caused by: <openjpa-2.3.0-r422266:1540826 fatal general error>
org.apache.openjpa.persistence.PersistenceException: The transaction has been
rolled back. See the nested exceptions for details on the errors that occurred.
at
org.apache.openjpa.kernel.BrokerImpl.newFlushException(BrokerImpl.java:2370)
at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2207)
at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2105)
at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2023)
at
org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1528)
at
org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:933)
at
org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:570)
... 18 more
Caused by: <openjpa-2.3.0-r422266:1540826 fatal general error>
org.apache.openjpa.persistence.PersistenceException: null
at
org.apache.openjpa.jdbc.meta.strats.EmbedFieldStrategy$NullEmbeddedStateManager.fetchInitialField(EmbedFieldStrategy.java:1058)
at
org.apache.openjpa.jdbc.meta.strats.RelationFieldStrategy.delete(RelationFieldStrategy.java:421)
at
org.apache.openjpa.jdbc.meta.FieldMapping.delete(FieldMapping.java:704)
at
org.apache.openjpa.jdbc.meta.strats.EmbedFieldStrategy.delete(EmbedFieldStrategy.java:262)
at
org.apache.openjpa.jdbc.meta.strats.EmbedFieldStrategy.delete(EmbedFieldStrategy.java:242)
at
org.apache.openjpa.jdbc.meta.FieldMapping.delete(FieldMapping.java:704)
at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.delete(AbstractUpdateManager.java:295)
at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.populateRowManager(AbstractUpdateManager.java:170)
at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:96)
at
org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:77)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:732)
at
org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:131)
... 25 more
{code}
Test project attached.
In order to face exception, several conditions must be met:
1) @EmbeddedMapping(nullIndicatorAttributeName = "city")
annotation.
2) When persisting entity with embedded object, do not fill mentioned above
"city" field.
3) Embedded object need to have another relation link (like in test project,
Address -> Country).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)