[hibernate-commits] Hibernate SVN: r18515 - core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jan 12 11:03:48 EST 2010


Author: smarlow at redhat.com
Date: 2010-01-12 11:03:48 -0500 (Tue, 12 Jan 2010)
New Revision: 18515

Added:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/Address.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/AssociationOverrideTest.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/ContactInfo.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/Employee.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/PhoneNumber.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/SocialSite.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/SocialTouchPoints.java
Log:
HHH-4679 Make sure @AssociationOverride support the dot notation

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/Address.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/Address.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/Address.java	2010-01-12 16:03:48 UTC (rev 18515)
@@ -0,0 +1,67 @@
+package org.hibernate.test.annotations.collectionelement;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+
+ at Entity
+public class Address {
+
+	@Id
+	int id;
+
+	private String street;
+	private String city;
+	private String state;
+	private String country;
+	private String zipcode;
+
+	public String getStreet() {
+		return street;
+	}
+
+	public void setStreet(String street) {
+		this.street = street;
+	}
+
+	public String getCity() {
+		return city;
+	}
+
+	public void setCity(String city) {
+		this.city = city;
+	}
+
+	public String getState() {
+		return state;
+	}
+
+	public void setState(String state) {
+		this.state = state;
+	}
+
+	public String getCountry() {
+		return country;
+	}
+
+	public void setCountry(String country) {
+		this.country = country;
+	}
+
+	public String getZipcode() {
+		return zipcode;
+	}
+
+	public void setZipcode(String zipcode) {
+		this.zipcode = zipcode;
+	}
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+}
\ No newline at end of file

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/AssociationOverrideTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/AssociationOverrideTest.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/AssociationOverrideTest.java	2010-01-12 16:03:48 UTC (rev 18515)
@@ -0,0 +1,63 @@
+package org.hibernate.test.annotations.collectionelement;
+
+import junit.framework.Assert;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.test.annotations.TestCase;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+public class AssociationOverrideTest extends TestCase {
+
+	public void testDottedNotation() throws Exception {
+		Session s = openSession();
+		Transaction tx = s.beginTransaction();
+		ContactInfo ci = new ContactInfo();
+		Address address = new Address();
+		address.setCity("Boston");
+		address.setCountry("USA");
+		address.setState("MA");
+		address.setStreet("27 School Street");
+		address.setZipcode("02108");
+		ci.setAddress(address);
+		List<PhoneNumber> phoneNumbers = new ArrayList();
+		PhoneNumber num = new PhoneNumber();
+		num.setNumber(5577188);
+		Employee e = new Employee();
+		Collection employeeList = new ArrayList();
+		employeeList.add(e);
+		e.setContactInfo(ci);
+		num.setEmployees(employeeList);
+		phoneNumbers.add(num);
+		ci.setPhoneNumbers(phoneNumbers);
+		SocialTouchPoints socialPoints = new SocialTouchPoints();
+		List<SocialSite> sites = new ArrayList<SocialSite>();
+		SocialSite site = new SocialSite();
+		site.setEmployee(employeeList);
+		site.setWebsite("www.jboss.org");
+		sites.add(site);
+		socialPoints.setWebsite(sites);
+		ci.setSocial(socialPoints);
+		s.persist(e);
+		tx.commit();
+
+		tx = s.beginTransaction();
+		s.clear();
+		e = (Employee) s.get(Employee.class,e.getId());
+		tx.commit();
+		s.close();
+	}
+
+	protected Class[] getMappings() {
+		return new Class[] {
+			Employee.class,
+			PhoneNumber.class,
+			Address.class,
+			SocialSite.class,
+			SocialTouchPoints.class
+		};
+	}
+
+}
\ No newline at end of file

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/ContactInfo.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/ContactInfo.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/ContactInfo.java	2010-01-12 16:03:48 UTC (rev 18515)
@@ -0,0 +1,46 @@
+package org.hibernate.test.annotations.collectionelement;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Embeddable;
+import javax.persistence.Embedded;
+import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import java.util.List;
+
+
+ at Embeddable
+public class ContactInfo {
+   @ManyToOne(targetEntity=Address.class, cascade=CascadeType.ALL)
+	Address address;
+
+	@ManyToMany(targetEntity=PhoneNumber.class, cascade=CascadeType.ALL)
+	List<PhoneNumber> phoneNumbers;
+
+	@Embedded
+	SocialTouchPoints social;
+
+	public Address getAddress() {
+		return address;
+	}
+
+	public void setAddress(Address address) {
+		this.address = address;
+	}
+
+	public List<PhoneNumber> getPhoneNumbers() {
+		return phoneNumbers;
+	}
+
+	public void setPhoneNumbers(List<PhoneNumber> phoneNumbers) {
+		this.phoneNumbers = phoneNumbers;
+	}
+
+	public SocialTouchPoints getSocial() {
+		return social;
+	}
+
+	public void setSocial(SocialTouchPoints social) {
+		this.social = social;
+	}
+
+}

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/Employee.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/Employee.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/Employee.java	2010-01-12 16:03:48 UTC (rev 18515)
@@ -0,0 +1,58 @@
+package org.hibernate.test.annotations.collectionelement;
+
+import javax.persistence.AssociationOverride;
+import javax.persistence.AssociationOverrides;
+import javax.persistence.Embedded;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
+
+ at Entity
+public class Employee {
+   @Id
+	int id;
+
+/*	@AssociationOverride(
+	 name="social.website",
+	 joinTable=@JoinTable(
+		 name="xxxwebsites",
+		 joinColumns=@JoinColumn(name="id"),
+		 inverseJoinColumns=@JoinColumn(name="id" )
+	 )
+	)
+
+	@AssociationOverride(
+	 name="social.website",
+		joinColumns=@JoinColumn(name="id"))
+*/
+
+	@AssociationOverride(
+	 name="social.website",
+	 joinTable=@JoinTable(
+		 name="xxxwebsites",
+		 joinColumns=@JoinColumn(name=""),
+		 inverseJoinColumns=@JoinColumn(name="id" )
+	 )
+	)
+   @Embedded
+	ContactInfo contactInfo;
+	
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public ContactInfo getContactInfo() {
+		return contactInfo;
+	}
+
+	public void setContactInfo(ContactInfo contactInfo) {
+		this.contactInfo = contactInfo;
+	}
+
+}
+

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/PhoneNumber.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/PhoneNumber.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/PhoneNumber.java	2010-01-12 16:03:48 UTC (rev 18515)
@@ -0,0 +1,43 @@
+package org.hibernate.test.annotations.collectionelement;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import java.util.Collection;
+
+ at Entity
+public class PhoneNumber {
+
+	@Id
+	int id;
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	int number;
+	
+   @ManyToMany(mappedBy="contactInfo.phoneNumbers", cascade= CascadeType.ALL)
+	Collection<Employee> employees;
+
+	public Collection<Employee> getEmployees() {
+		return employees;
+	}
+
+	public void setEmployees(Collection<Employee> employees) {
+		this.employees = employees;
+	}
+
+	public int getNumber() {
+		return number;
+	}
+
+	public void setNumber(int number) {
+		this.number = number;
+	}
+
+	public int getId() {
+		return id;
+	}
+}

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/SocialSite.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/SocialSite.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/SocialSite.java	2010-01-12 16:03:48 UTC (rev 18515)
@@ -0,0 +1,42 @@
+package org.hibernate.test.annotations.collectionelement;
+
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.ManyToMany;
+import java.util.Collection;
+
+ at Entity
+public class SocialSite {
+
+	@Id
+	int id;
+
+	String website;
+
+	@ManyToMany(mappedBy="contactInfo.social.website")
+	Collection<Employee> employee;
+
+	public int getId() {
+		return id;
+	}
+
+	public void setId(int id) {
+		this.id = id;
+	}
+
+	public String getWebsite() {
+		return website;
+	}
+
+	public void setWebsite(String website) {
+		this.website = website;
+	}
+
+	public Collection<Employee> getEmployee() {
+		return employee;
+	}
+
+	public void setEmployee(Collection<Employee> employee) {
+		this.employee = employee;
+	}
+}

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/SocialTouchPoints.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/SocialTouchPoints.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/collectionelement/SocialTouchPoints.java	2010-01-12 16:03:48 UTC (rev 18515)
@@ -0,0 +1,22 @@
+package org.hibernate.test.annotations.collectionelement;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Embeddable;
+import javax.persistence.ManyToMany;
+import java.util.List;
+
+ at Embeddable
+public class SocialTouchPoints {
+
+	// owning side of many to many
+	@ManyToMany(targetEntity=SocialSite.class, cascade= CascadeType.ALL)
+	List<SocialSite> website;
+
+	public List<SocialSite> getWebsite() {
+		return website;
+	}
+
+	public void setWebsite(List<SocialSite> website) {
+		this.website = website;
+	}
+}



More information about the hibernate-commits mailing list