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