[ 
https://issues.apache.org/jira/browse/OPENJPA-2594?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Budarov updated OPENJPA-2594:
---------------------------------------
    Attachment: embedded-deletion.zip

> 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
>         Attachments: embedded-deletion.zip
>
>
> 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