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)

Reply via email to