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


Reply via email to