HHH-4684 Make sure @Lob works with @ElementCollection

git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@18416 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
Scott Marlow 2010-01-05 18:50:48 +00:00
parent 39dd795e40
commit 5509ab643d
2 changed files with 39 additions and 1 deletions

View File

@ -27,6 +27,9 @@ package org.hibernate.test.annotations.entity;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Currency; import java.util.Currency;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import org.hibernate.AnnotationException; import org.hibernate.AnnotationException;
import org.hibernate.Hibernate; import org.hibernate.Hibernate;
@ -469,6 +472,17 @@ public class BasicHibernateAnnotationsTest extends TestCase {
Country country = new Country(); Country country = new Country();
country.setName( "Middle Earth" ); country.setName( "Middle Earth" );
forest.setCountry( country ); forest.setCountry( country );
Set<Country> near = new HashSet<Country>();
country = new Country();
country.setName("Mordor");
near.add(country);
country = new Country();
country.setName("Gondor");
near.add(country);
country = new Country();
country.setName("Eriador");
near.add(country);
forest.setNear(near);
Session s; Session s;
Transaction tx; Transaction tx;
s = openSession(); s = openSession();
@ -481,8 +495,17 @@ public class BasicHibernateAnnotationsTest extends TestCase {
tx = s.beginTransaction(); tx = s.beginTransaction();
forest = (Forest) s.get( Forest.class, forest.getId() ); forest = (Forest) s.get( Forest.class, forest.getId() );
assertNotNull( forest ); assertNotNull( forest );
assertNotNull( forest.getCountry() ); country = forest.getCountry();
assertNotNull( country );
assertEquals( country.getName(), forest.getCountry().getName() ); assertEquals( country.getName(), forest.getCountry().getName() );
near = forest.getNear();
assertTrue("correct number of nearby countries", near.size() == 3);
for (Iterator iter = near.iterator(); iter.hasNext();) {
country = (Country)iter.next();
String name = country.getName();
assertTrue("found expected nearby country " + name,
(name.equals("Mordor") || name.equals("Gondor") || name.equals("Eriador")));
}
tx.commit(); tx.commit();
s.close(); s.close();
} }

View File

@ -1,6 +1,7 @@
//$Id$ //$Id$
package org.hibernate.test.annotations.entity; package org.hibernate.test.annotations.entity;
import javax.persistence.ElementCollection;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.Id; import javax.persistence.Id;
@ -19,6 +20,8 @@ import org.hibernate.annotations.PolymorphismType;
import org.hibernate.annotations.Type; import org.hibernate.annotations.Type;
import org.hibernate.annotations.Where; import org.hibernate.annotations.Where;
import java.util.Set;
/** /**
* Use hibernate specific annotations * Use hibernate specific annotations
* *
@ -47,6 +50,7 @@ public class Forest {
private String smallText; private String smallText;
private String bigText; private String bigText;
private Country country; private Country country;
private Set near;
@OptimisticLock(excluded=true) @OptimisticLock(excluded=true)
@Type(type = "text") @Type(type = "text")
@ -110,4 +114,15 @@ public class Forest {
public void setCountry(Country country) { public void setCountry(Country country) {
this.country = country; this.country = country;
} }
@Lob
@ElementCollection
public Set<Country> getNear() {
return near;
}
public void setNear(Set<Country>near) {
this.near = near;
}
} }