Author: faywang
Date: Thu Jan 28 00:04:31 2010
New Revision: 903914

URL: http://svn.apache.org/viewvc?rev=903914&view=rev
Log:
OPENJPA-1485: isLoaded util method should return true for an entity when an 
unloaded basic type is not in the fetch plan.

Modified:
    
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
    
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/util/TestPersistenceUnitUtil.java
    
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistenceUtil.java

Modified: 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java?rev=903914&r1=903913&r2=903914&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
 (original)
+++ 
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
 Thu Jan 28 00:04:31 2010
@@ -3376,4 +3376,8 @@
     public List<FieldMetaData> getMappedByIdFields() {
         return _mappedByIdFields;
     }
+    
+    public boolean requiresFetch(FieldMetaData fmd) {
+        return (_broker.getFetchConfiguration().requiresFetch(fmd) != 
FetchConfiguration.FETCH_NONE);
+    }
 }

Modified: 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/util/TestPersistenceUnitUtil.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/util/TestPersistenceUnitUtil.java?rev=903914&r1=903913&r2=903914&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/util/TestPersistenceUnitUtil.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/util/TestPersistenceUnitUtil.java
 Thu Jan 28 00:04:31 2010
@@ -33,6 +33,7 @@
 import javax.persistence.spi.PersistenceProvider;
 import javax.persistence.spi.ProviderUtil;
 
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
 import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
 import org.apache.openjpa.persistence.OpenJPAPersistence;
 import org.apache.openjpa.persistence.PersistenceProviderImpl;
@@ -425,6 +426,24 @@
         em.close();
     }
 
+    public void testBasicTypeNotLoaded() {
+        PersistenceUnitUtil puu = emf.getPersistenceUnitUtil();
+        EntityManager em = emf.createEntityManager();
+        EagerEntity ee = createEagerEntity();
+        int id = ee.getId();
+        
+        em.getTransaction().begin();
+        em.persist(ee);
+        em.getTransaction().commit();
+        em.clear();
+        // name is not eagerly loaded, only eagerEmbed is eagerly loaded
+        OpenJPAEntityManager kem = OpenJPAPersistence.cast(em);
+        kem.getFetchPlan().resetFetchGroups().removeFetchGroup("default")
+            .addField(EagerEntity.class, "eagerEmbed");
+        ee = em.find(EagerEntity.class, id);
+        assertEquals(true, puu.isLoaded(ee));
+    }
+
     private EagerEntity createEagerEntity() {
         EagerEntity ee = new EagerEntity();
         ee.setId(new Random().nextInt());

Modified: 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistenceUtil.java
URL: 
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistenceUtil.java?rev=903914&r1=903913&r2=903914&view=diff
==============================================================================
--- 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistenceUtil.java
 (original)
+++ 
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/OpenJPAPersistenceUtil.java
 Thu Jan 28 00:04:31 2010
@@ -29,6 +29,7 @@
 import org.apache.openjpa.enhance.StateManager;
 import org.apache.openjpa.kernel.Broker;
 import org.apache.openjpa.kernel.OpenJPAStateManager;
+import org.apache.openjpa.kernel.StateManagerImpl;
 import org.apache.openjpa.meta.FieldMetaData;
 import org.apache.openjpa.meta.JavaTypes;
 import org.apache.openjpa.meta.ValueMetaData;
@@ -161,7 +162,7 @@
             if (fmds != null && fmds.length > 0) {
                 pcs = addToLoadSet(pcs, sm);
                 for (FieldMetaData fmd : fmds) {
-                    if (fmd.isInDefaultFetchGroup()) {
+                    if (((StateManagerImpl)sm).requiresFetch(fmd)) {
                         if (!isLoadedField(sm, fmd, pcs)) {
                             isLoaded = false;
                             break;


Reply via email to