OPENJPA-1174: default fetch type for ManyToOne and OneToOne is eager.

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@807602 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Fay Wang 2009-08-25 13:04:12 +00:00
parent 049c91707b
commit 9a4406038e
5 changed files with 64 additions and 2 deletions

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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();

View File

@ -31,6 +31,8 @@
<many-to-one name="country" optional="false" fetch="LAZY">
<join-column name="COUNTRY_ID" />
</many-to-one>
<many-to-one name="countryEager">
</many-to-one>
<embedded name="symbol" />
</attributes>
</entity>

View File

@ -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");