You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Mark Struberg (JIRA)" <ji...@apache.org> on 2010/12/02 12:20:10 UTC

[jira] Updated: (OPENJPA-1900) ClassCastException when serializing an entity if DetachedStateField=true

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

Mark Struberg updated OPENJPA-1900:
-----------------------------------

    Attachment: OPENJPA-1900-test-1.patch

I tried to reproduce my problem with an unit test but had no luck so far. But the test now crashes with another issue.

testSerialization(org.apache.openjpa.persistence.proxy.TestEntitySerialize)  Time elapsed: 14.822 sec  <<< ERROR!
java.lang.NullPointerException
	at org.apache.openjpa.persistence.proxy.TestEntitySerialize.testSerialization(TestEntitySerialize.java:104)


The situation:
I added a 'previousAnnuity' to reflect the existence of a annuity predecessor. 
The data I create is a FixedAnnuity which gets superceeded by an EquityAnnuity.
I then load the last annuity (the EquityAnnuity) in one transaction. While having the EntityManager open, the previousAnnuity is available. But if I close the EntityManager, it suddenly dissapears (field get's reset to null).

Is this a spec like behaviour that entity members get deleted while closing the EntityManager?

> ClassCastException when serializing an entity if DetachedStateField=true
> ------------------------------------------------------------------------
>
>                 Key: OPENJPA-1900
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1900
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.0.1, 2.1.0
>            Reporter: Mark Struberg
>             Fix For: 2.1.0
>
>         Attachments: OPENJPA-1900-test-1.patch
>
>
> When using 
> <property name="openjpa.DetachState" value="fetch-groups(DetachedStateField=true)"/>
> serializing an entity leads to the following Exception:
> java.lang.ClassCastException: org.apache.openjpa.kernel.StateManagerImpl cannot be cast to org.apache.openjpa.kernel.DetachedStateManager
> 	at org.apache.openjpa.util.Proxies.writeReplace(Proxies.java:147)
> 	at org.apache.openjpa.util.java$util$Date$proxy.writeReplace(Unknown Source)
> 	at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at java.io.ObjectStreamClass.invokeWriteReplace(ObjectStreamClass.java:1032)
> 	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1107)
> 	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
> 	at org.apache.openjpa.kernel.SingleFieldManager.serialize(SingleFieldManager.java:545)
> 	at org.apache.openjpa.kernel.StateManagerImpl.writeDetached(StateManagerImpl.java:1478)
> 	at at.ac.tuwien.tiss.curriculum.be.entities.CurriculumVersion.writeExternal(CurriculumVersion.java)
> 	at java.io.ObjectOutputStream.writeExternalData(ObjectOutputStream.java:1421)
> This seems related to OPENJPA-1597

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.