Author: fancy
Date: Wed Jan 14 15:21:04 2009
New Revision: 734550
URL: http://svn.apache.org/viewvc?rev=734550&view=rev
Log:
OPENJPA-836 after em.clear the datacache is inconsistent
Modified:
openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java
Modified:
openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java?rev=734550&r1=734549&r2=734550&view=diff
==============================================================================
---
openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java
(original)
+++
openjpa/branches/1.3.x/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java
Wed Jan 14 15:21:04 2009
@@ -269,8 +269,17 @@
return;
int index = fmd.getIndex();
+ OpenJPAStateManager dsm = null;
+ if (sm.getPersistenceCapable().pcIsDetached()) {
+ dsm = (DetachedStateManager) sm.getPersistenceCapable().
+ pcGetStateManager();
+ sm.getPersistenceCapable().pcReplaceStateManager(sm);
+ }
+
Object val = toData(fmd, sm.fetchField(index, false),
sm.getContext());
+ if (dsm != null)
+ sm.getPersistenceCapable().pcReplaceStateManager(dsm);
if (val != NULL)
setData(index, val);
else // unable to store field value; clear out any old values