diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security.java index 6e624b1b6..23a337286 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security.java @@ -34,6 +34,9 @@ public class Security { @JoinColumn(name="COUNTRY_ID") private Country country; + @ManyToOne + private Country countryEager; + public Security() { super(); } @@ -56,6 +59,14 @@ public class Security { this.country = c; } + public Country getCountryEager() { + return countryEager; + } + + public void setCountryEager(Country c) { + this.countryEager = c; + } + public Embed getSymbol() { return symbol; } diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security1.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security1.java index d90740af8..d77668893 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security1.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/Security1.java @@ -26,6 +26,8 @@ public class Security1 { private Country1 country; + private Country1 countryEager; + public Security1() { super(); } @@ -48,6 +50,14 @@ public class Security1 { this.country = c; } + public Country1 getCountryEager() { + return countryEager; + } + + public void setCountryEager(Country1 c) { + this.countryEager = c; + } + public Embed getSymbol() { return symbol; } diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/TestXMLPersistenceMetaDataParser.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/TestXMLPersistenceMetaDataParser.java index 491536395..97ccfcc1c 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/TestXMLPersistenceMetaDataParser.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/TestXMLPersistenceMetaDataParser.java @@ -126,6 +126,45 @@ public class TestXMLPersistenceMetaDataParser extends SQLListenerTestCase { em.close(); } + + public void testManyToOneEagerFetch() { + // initialize objects + EntityManager em = emf.createEntityManager(); + + long aI_sid = 148007245; + long aUS_sid = 2; + + Security1 aI_security = new Security1(aI_sid, new Embed("XYZ")); + Country1 aUS_country = new Country1(aUS_sid, "USA"); + aI_security.setCountry1(aUS_country); + aI_security.setCountryEager(aUS_country); + + Security aI_securityAnn = new Security(aI_sid, new Embed("XYZ")); + Country aUS_countryAnn = new Country(aUS_sid, "USA"); + aI_securityAnn.setCountry(aUS_countryAnn); + aI_securityAnn.setCountryEager(aUS_countryAnn); + + em.getTransaction().begin(); + em.persist(aI_security); + em.persist(aUS_country); + em.getTransaction().commit(); + em.clear(); + + aI_security = em.find(Security1.class, aI_sid); + em.clear(); + Country1 countryEager = aI_security.getCountryEager(); + assertNotNull(countryEager); + + aI_securityAnn = em.find(Security.class, aI_sid); + em.clear(); + Country countryEagerAnn = aI_securityAnn.getCountryEager(); + assertNotNull(countryEagerAnn); + + // Close + em.close(); + + } + private void printArrayList(ArrayList aList) { Iterator itr = aList.iterator(); diff --git a/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/orm.xml b/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/orm.xml index 5d0150d01..bf6e0eddc 100644 --- a/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/orm.xml +++ b/openjpa-persistence-jdbc/src/test/resources/org/apache/openjpa/persistence/orm.xml @@ -31,6 +31,8 @@ + + diff --git a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java index 4d84575ae..c83784925 100644 --- a/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java +++ b/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataParser.java @@ -1425,7 +1425,7 @@ public class XMLPersistenceMetaDataParser protected void parseOneToOne(FieldMetaData fmd, Attributes attrs) throws SAXException { String val = attrs.getValue("fetch"); - if (val != null && "EAGER".equals(val)) { + if (val == null || "EAGER".equals(val)) { fmd.setInDefaultFetchGroup(true); } val = attrs.getValue("target-entity"); @@ -1444,7 +1444,7 @@ public class XMLPersistenceMetaDataParser protected void parseManyToOne(FieldMetaData fmd, Attributes attrs) throws SAXException { String val = attrs.getValue("fetch"); - if (val != null && "EAGER".equals(val)) { + if (val == null || "EAGER".equals(val)) { fmd.setInDefaultFetchGroup(true); } val = attrs.getValue("target-entity");