Author: curtisr7
Date: Sun Mar 21 22:13:22 2010
New Revision: 925918

URL: http://svn.apache.org/viewvc?rev=925918&view=rev
Log:
OPENJPA-1545: Only detach StateManagers that aren't already detached.

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

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java?rev=925918&r1=925917&r2=925918&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachManagerLite.java
 Sun Mar 21 22:13:22 2010
@@ -46,14 +46,16 @@ public class DetachManagerLite {
             ClassMetaData cmd = sm.getMetaData();
             if (sm.isPersistent() && cmd.isDetachable()) {
                 PersistenceCapable pc = sm.getPersistenceCapable();
-                // Detach proxy fields.
-                BitSet loaded = sm.getLoaded();
-                for (FieldMetaData fmd : cmd.getProxyFields()) {
-                    if (loaded.get(fmd.getIndex())) {
-                        detachProxyField(fmd, pc, sm, fm);
+                if(pc.pcIsDetached() == false){
+                    // Detach proxy fields.
+                    BitSet loaded = sm.getLoaded();
+                    for (FieldMetaData fmd : cmd.getProxyFields()) {
+                        if (loaded.get(fmd.getIndex())) {
+                            detachProxyField(fmd, pc, sm, fm);
+                        }
                     }
+                    pc.pcReplaceStateManager(null);
                 }
-                pc.pcReplaceStateManager(null);
             }
         }
     }


Reply via email to