[hibernate-commits] Hibernate SVN: r18628 - in core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities: e5/b and 2 other directories.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Jan 26 08:30:33 EST 2010


Author: epbernard
Date: 2010-01-26 08:30:32 -0500 (Tue, 26 Jan 2010)
New Revision: 18628

Added:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/DerivedIdentityEmbeddedIdParentSameIdTypeDepTest.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/MedicalHistory.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/Person.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/PersonId.java
Modified:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e5/b/DerivedIdentityIdClassParentSameIdTypeDepTest.java
Log:
HHH-4529 Add support for parent's id as EmbeddedId and derived entity reusing the same PK class than the parent

Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e5/b/DerivedIdentityIdClassParentSameIdTypeDepTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e5/b/DerivedIdentityIdClassParentSameIdTypeDepTest.java	2010-01-26 13:26:07 UTC (rev 18627)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e5/b/DerivedIdentityIdClassParentSameIdTypeDepTest.java	2010-01-26 13:30:32 UTC (rev 18628)
@@ -38,7 +38,7 @@
 	@Override
 	protected Class<?>[] getAnnotatedClasses() {
 		return new Class<?>[] {
-			MedicalHistory.class,
+				MedicalHistory.class,
 				Person.class
 		};
 	}

Copied: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/DerivedIdentityEmbeddedIdParentSameIdTypeDepTest.java (from rev 18627, core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e5/b/DerivedIdentityIdClassParentSameIdTypeDepTest.java)
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/DerivedIdentityEmbeddedIdParentSameIdTypeDepTest.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/DerivedIdentityEmbeddedIdParentSameIdTypeDepTest.java	2010-01-26 13:30:32 UTC (rev 18628)
@@ -0,0 +1,44 @@
+package org.hibernate.test.annotations.derivedidentities.e6.b;
+
+import org.hibernate.Session;
+import org.hibernate.test.annotations.TestCase;
+import org.hibernate.test.util.SchemaUtil;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class DerivedIdentityEmbeddedIdParentSameIdTypeDepTest extends TestCase {
+
+	public void testOneToOneExplicitJoinColumn() throws Exception {
+		assertTrue( SchemaUtil.isColumnPresent( "MedicalHistory", "FK1", getCfg() ) );
+		assertTrue( SchemaUtil.isColumnPresent( "MedicalHistory", "FK2", getCfg() ) );
+		assertTrue( ! SchemaUtil.isColumnPresent( "MedicalHistory", "firstname", getCfg() ) );
+		Person e = new Person();
+		e.id = new PersonId();
+		e.id.firstName = "Emmanuel";
+		e.id.lastName = "Bernard";
+		Session s = openSession(  );
+		s.getTransaction().begin();
+		s.persist( e );
+		MedicalHistory d = new MedicalHistory();
+		d.id = new PersonId();
+		d.id.firstName = "Emmanuel"; //FIXME not needed when foreign is enabled
+		d.id.lastName = "Bernard"; //FIXME not needed when foreign is enabled
+		d.patient = e;
+		s.persist( d );
+		s.flush();
+		s.clear();
+		d = (MedicalHistory) s.get( MedicalHistory.class, d.id );
+		assertEquals( d.id.firstName, d.patient.id.firstName );
+		s.getTransaction().rollback();
+		s.close();
+	}
+
+	@Override
+	protected Class<?>[] getAnnotatedClasses() {
+		return new Class<?>[] {
+				MedicalHistory.class,
+				Person.class
+		};
+	}
+}
\ No newline at end of file

Copied: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/MedicalHistory.java (from rev 18627, core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e5/b/MedicalHistory.java)
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/MedicalHistory.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/MedicalHistory.java	2010-01-26 13:30:32 UTC (rev 18628)
@@ -0,0 +1,26 @@
+package org.hibernate.test.annotations.derivedidentities.e6.b;
+
+import javax.persistence.EmbeddedId;
+import javax.persistence.Entity;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinColumns;
+import javax.persistence.MapsId;
+import javax.persistence.OneToOne;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class MedicalHistory {
+	//all attributes map to relationship: AttributeOverride not allowed
+	@EmbeddedId
+	PersonId id;
+
+	@MapsId
+	@JoinColumns({
+			@JoinColumn(name = "FK1", referencedColumnName = "firstName"),
+			@JoinColumn(name = "FK2", referencedColumnName = "lastName")
+	})
+	@OneToOne
+	Person patient;
+}
\ No newline at end of file

Copied: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/Person.java (from rev 18627, core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e5/b/Person.java)
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/Person.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/Person.java	2010-01-26 13:30:32 UTC (rev 18628)
@@ -0,0 +1,13 @@
+package org.hibernate.test.annotations.derivedidentities.e6.b;
+
+import javax.persistence.EmbeddedId;
+import javax.persistence.Entity;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Entity
+public class Person {
+	@EmbeddedId
+	PersonId id;
+}
\ No newline at end of file

Copied: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/PersonId.java (from rev 18627, core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e5/b/PersonId.java)
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/PersonId.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/derivedidentities/e6/b/PersonId.java	2010-01-26 13:30:32 UTC (rev 18628)
@@ -0,0 +1,13 @@
+package org.hibernate.test.annotations.derivedidentities.e6.b;
+
+import java.io.Serializable;
+import javax.persistence.Embeddable;
+
+/**
+ * @author Emmanuel Bernard
+ */
+ at Embeddable
+public class PersonId implements Serializable {
+	String firstName;
+	String lastName;
+}
\ No newline at end of file



More information about the hibernate-commits mailing list