Author: ppoddar
Date: Thu Jan 21 00:31:06 2010
New Revision: 901464

URL: http://svn.apache.org/viewvc?rev=901464&view=rev
Log:
OPENJPA-1474: Setting intermediate field should take into account the loaded 
state

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

Modified: 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java?rev=901464&r1=901463&r2=901464&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java
 (original)
+++ 
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreManager.java
 Thu Jan 21 00:31:06 2010
@@ -369,8 +369,7 @@
                 Object mappedByObject = info.result.getMappedByValue();
                 if (mappedByFieldMapping != null && mappedByObject != null)
                     if (mappedByObject instanceof OpenJPAId &&
-                        mapping.getExtraFieldDataIndex(mappedByFieldMapping.
-                        getIndex()) != -1)
+                        
mapping.getExtraFieldDataIndex(mappedByFieldMapping.getIndex()) != -1) {
                         // The inverse relation can not be set since
                         // we are eagerly loading this sm for
                         // a sm owner that is still in the process of 
@@ -379,10 +378,15 @@
                         // The inverse relation is set later by
                         // setInverseRelation() when the sm owner is fully
                         // initialized.
-                        sm.setIntermediate(mappedByFieldMapping.getIndex(),
-                            mappedByObject);
-                    else
+                        int index = mappedByFieldMapping.getIndex();
+                        if (sm.getLoaded().get(index)) {
+                            sm.setImplData(index, mappedByObject);
+                        } else {
+                            sm.setIntermediate(index, mappedByObject);
+                        }
+                    } else {
                         setMappedBy(sm, mappedByFieldMapping, mappedByObject);
+                    }
             }
             // load the selected mappings into the given state manager
             if (res != null) {


Reply via email to