Update of /cvsroot/hibernate/HibernateExt/metadata/src/test/org/hibernate/test/annotations/embedded In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32332/metadata/src/test/org/hibernate/test/annotations/embedded Modified Files: EmbeddedTest.java Added Files: CorpType.java InternetProvider.java LegalStructure.java Manager.java Nationality.java Log Message: test suite for ANN-226 --- NEW FILE: CorpType.java --- //$Id: CorpType.java,v 1.1 2006/02/11 17:58:11 epbernard Exp $ package org.hibernate.test.annotations.embedded; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * @author Emmanuel Bernard */ @Entity public class CorpType { private Integer id; private String type; @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getType() { return type; } public void setType(String type) { this.type = type; } } --- NEW FILE: InternetProvider.java --- //$Id: InternetProvider.java,v 1.1 2006/02/11 17:58:11 epbernard Exp $ package org.hibernate.test.annotations.embedded; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.GeneratedValue; /** * @author Emmanuel Bernard */ @Entity public class InternetProvider { private Integer id; private String brandName; private LegalStructure owner; public String getBrandName() { return brandName; } public void setBrandName(String brandName) { this.brandName = brandName; } @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public LegalStructure getOwner() { return owner; } public void setOwner(LegalStructure owner) { this.owner = owner; } } --- NEW FILE: LegalStructure.java --- //$Id: LegalStructure.java,v 1.1 2006/02/11 17:58:11 epbernard Exp $ package org.hibernate.test.annotations.embedded; import java.util.Set; import java.util.HashSet; import javax.persistence.Embeddable; import javax.persistence.ManyToOne; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; /** * @author Emmanuel Bernard */ @Embeddable public class LegalStructure { private String name; private String country; private CorpType corporationType; private Nationality origin; private Set<Manager> topManagement = new HashSet<Manager>(); @ManyToOne @JoinColumn(name="CORP_ID") public CorpType getCorporationType() { return corporationType; } public void setCorporationType(CorpType corporationType) { this.corporationType = corporationType; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } public String getName() { return name; } public void setName(String name) { this.name = name; } @ManyToOne @JoinColumn(name="origin_fk") public Nationality getOrigin() { return origin; } public void setOrigin(Nationality origin) { this.origin = origin; } @OneToMany(mappedBy="employer") public Set<Manager> getTopManagement() { return topManagement; } public void setTopManagement(Set<Manager> topManagement) { this.topManagement = topManagement; } } --- NEW FILE: Manager.java --- //$Id: Manager.java,v 1.1 2006/02/11 17:58:11 epbernard Exp $ package org.hibernate.test.annotations.embedded; import javax.persistence.Entity; import javax.persistence.ManyToOne; import javax.persistence.Id; import javax.persistence.GeneratedValue; /** * @author Emmanuel Bernard */ @Entity public class Manager { private Integer id; private String name; private InternetProvider employer; @ManyToOne public InternetProvider getEmployer() { return employer; } public void setEmployer(InternetProvider employer) { this.employer = employer; } @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } --- NEW FILE: Nationality.java --- //$Id: Nationality.java,v 1.1 2006/02/11 17:58:11 epbernard Exp $ package org.hibernate.test.annotations.embedded; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.GeneratedValue; /** * @author Emmanuel Bernard */ @Entity public class Nationality { private Integer id; private String name; @Id @GeneratedValue public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } Index: EmbeddedTest.java =================================================================== RCS file: /cvsroot/hibernate/HibernateExt/metadata/src/test/org/hibernate/test/annotations/embedded/EmbeddedTest.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- EmbeddedTest.java 7 Oct 2005 18:23:27 -0000 1.7 +++ EmbeddedTest.java 11 Feb 2006 17:58:11 -0000 1.8 @@ -3,6 +3,7 @@ import java.io.Serializable; import java.util.List; +import java.util.Set; import org.hibernate.Query; import org.hibernate.Session; @@ -268,6 +269,77 @@ s.close(); } + public void testEmbeddedAndMultipleManyToOne() throws Exception { + Session s; + s = openSession(); + Transaction tx = s.beginTransaction(); + CorpType type = new CorpType(); + type.setType( "National" ); + s.persist( type ); + Nationality nat = new Nationality(); + nat.setName( "Canadian" ); + s.persist( nat ); + InternetProvider provider = new InternetProvider(); + provider.setBrandName( "Fido" ); + LegalStructure structure = new LegalStructure(); + structure.setCorporationType( type ); + structure.setCountry( "Canada" ); + structure.setName( "Rogers" ); + provider.setOwner( structure ); + structure.setOrigin( nat ); + s.persist( provider ); + tx.commit(); + s.close(); + + s = openSession(); + tx = s.beginTransaction(); + provider = (InternetProvider) s.get(InternetProvider.class, provider.getId() ); + assertNotNull( provider.getOwner() ); + assertNotNull( "Many to one not set", provider.getOwner().getCorporationType() ); + assertEquals( "Wrong link", type.getType(), provider.getOwner().getCorporationType().getType() ); + assertNotNull( "2nd Many to one not set", provider.getOwner().getOrigin() ); + assertEquals( "Wrong 2nd link", nat.getName(), provider.getOwner().getOrigin().getName() ); + s.delete( provider ); + s.delete( provider.getOwner().getCorporationType() ); + s.delete( provider.getOwner().getOrigin() ); + tx.commit(); + s.close(); + } + + public void testEmbeddedAndOneToMany() throws Exception { + Session s; + s = openSession(); + Transaction tx = s.beginTransaction(); + InternetProvider provider = new InternetProvider(); + provider.setBrandName( "Fido" ); + LegalStructure structure = new LegalStructure(); + structure.setCountry( "Canada" ); + structure.setName( "Rogers" ); + provider.setOwner( structure ); + s.persist( provider ); + Manager manager = new Manager(); + manager.setName( "Bill" ); + manager.setEmployer( provider ); + structure.getTopManagement().add(manager); + s.persist( manager ); + tx.commit(); + s.close(); + + s = openSession(); + tx = s.beginTransaction(); + provider = (InternetProvider) s.get(InternetProvider.class, provider.getId() ); + assertNotNull( provider.getOwner() ); + Set<Manager> topManagement = provider.getOwner().getTopManagement(); + assertNotNull( "OneToMany not set", topManagement ); + assertEquals( "Wrong number of elements", 1, topManagement.size() ); + manager = (Manager) topManagement.iterator().next(); + assertEquals( "Wrong element", "Bill", manager.getName() ); + s.delete( manager ); + s.delete( provider ); + tx.commit(); + s.close(); + } + public EmbeddedTest(String x) { super( x ); } @@ -279,7 +351,11 @@ AddressType.class, VanillaSwap.class, SpreadDeal.class, - Book.class + Book.class, + InternetProvider.class, + CorpType.class, + Nationality.class, + Manager.class }; } } |