[
https://issues.apache.org/jira/browse/OPENJPA-2360?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13651705#comment-13651705
]
Ralf Ebert edited comment on OPENJPA-2360 at 5/8/13 8:46 AM:
-------------------------------------------------------------
Yeah, turns out you're right. Patch doesn't fix our problem. At least in my
case.
Running with the proposed fix causes another problem a few lines later:
Caused by: java.lang.UnsupportedOperationException
at
org.apache.openjpa.kernel.DetachedValueStateManager.setObjectId(DetachedValueStateManager.java:155)
I don't know how or why, but somehow OpenJPA confuses the object state. The
entity it wants to update (no state change) is in attached state but somehow a
DetachedValueStatemanager gets involved which turns out bad. I'm in no way an
OpenJPA-expert but this is how it looks to me.
I ran into the ClassCastException-problem while working around another problem.
My application called merge on an attached object. According to the
documentation this call should be ignored. But it wasn't. OpenJPA decided to
override my changes to the attached entity with the current state from the
database and persist that. But only on one property (boolean), not on an other
(String). So there is already some object state confusion present which
possibly also causes this ClassCastException-problem.
I hope this is of any help...
was (Author: dobrowolsk):
Yeah, turns out you're right. Patch doesn't fix our problem. At least in my
case.
Running with the proposed fix causes another problem a few lines later:
Caused by: java.lang.UnsupportedOperationException
at
org.apache.openjpa.kernel.DetachedValueStateManager.setObjectId(DetachedValueStateManager.java:155)
I don't know how or why, but somehow OpenJPA confuses the object state. The
entity it wants to update is in attached state but somehow a
DetachedValueStatemanager gets involved which turns out bad. I'm in now way an
OpenJPA-expert but this is how it looks to me.
I ran into the ClassCastException-problem while working around another problem.
My application called merge on an attached object. According to the
documentation this call should be ignored. But it wasn't. OpenJPA decided to
override my changes to the attached entity with the current state from the
database and persist that. But only on one property (boolean), not on an other
(String). So there is already some object state confusion present which
possibly also causes this ClassCastException-problem.
I hope this is of any help...
> ClassCastException: DetachedValueStateManager cannot be cast to
> StateManagerImpl
> --------------------------------------------------------------------------------
>
> Key: OPENJPA-2360
> URL: https://issues.apache.org/jira/browse/OPENJPA-2360
> Project: OpenJPA
> Issue Type: Bug
> Components: jdbc, kernel
> Affects Versions: 2.2.1
> Reporter: Guillaume Chauvet
> Priority: Blocker
> Attachments: OPENJPA-2360.patch
>
>
> The corresponding stacktrace :
> ==========================================
> Caused by: <openjpa-2.2.2-QFD-r422266:1446687M nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException:
> org.apache.openjpa.kernel.DetachedValueStateManager cannot be cast to
> org.apache.openjpa.kernel.StateManagerImpl
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2002)
> at
> org.apache.openjpa.kernel.LocalManagedRuntime.commit(LocalManagedRuntime.java:81)
> at org.apache.openjpa.kernel.BrokerImpl.commit(BrokerImpl.java:1518)
> at
> org.apache.openjpa.kernel.DelegatingBroker.commit(DelegatingBroker.java:933)
> at
> org.apache.openjpa.persistence.EntityManagerImpl.commit(EntityManagerImpl.java:570)
> ... 39 more
> Caused by: java.lang.ClassCastException:
> org.apache.openjpa.kernel.DetachedValueStateManager cannot be cast to
> org.apache.openjpa.kernel.StateManagerImpl
> at
> org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushAndUpdate(PreparedStatementManagerImpl.java:134)
> at
> org.apache.openjpa.jdbc.kernel.BatchingPreparedStatementManagerImpl.flushAndUpdate(BatchingPreparedStatementManagerImpl.java:79)
> at
> org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flushInternal(PreparedStatementManagerImpl.java:100)
> at
> org.apache.openjpa.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:88)
> at
> org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:550)
> at
> org.apache.openjpa.jdbc.kernel.ConstraintUpdateManager.flush(ConstraintUpdateManager.java:107)
> at
> org.apache.openjpa.jdbc.kernel.BatchingConstraintUpdateManager.flush(BatchingConstraintUpdateManager.java:59)
> at
> org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:105)
> at
> org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:78)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:732)
> at
> org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:131)
> at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2178)
> at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2076)
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1994)
> ... 43 more
--
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