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) {