Author: fancy
Date: Wed Jan 14 15:21:13 2009
New Revision: 734551

URL: http://svn.apache.org/viewvc?rev=734551&view=rev
Log:
OPENJPA-836 after em.clear the datacache is inconsistent

Modified:
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java?rev=734551&r1=734550&r2=734551&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/PCDataImpl.java
 Wed Jan 14 15:21:13 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


Reply via email to