[hibernate-commits] Hibernate SVN: r12760 - in trunk/HibernateExt/annotations/src: test/org/hibernate/test/annotations/onetomany and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Thu Jul 12 16:21:26 EDT 2007
Author: epbernard
Date: 2007-07-12 16:21:25 -0400 (Thu, 12 Jul 2007)
New Revision: 12760
Added:
trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/Order.java
trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderByTest.java
trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderID.java
trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderItem.java
trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderItemID.java
Modified:
trunk/HibernateExt/annotations/src/java/org/hibernate/cfg/annotations/CollectionBinder.java
Log:
ANN-617 @OrderBy was not handled properly on properties from @IdClass or @EmbeddedId
Modified: trunk/HibernateExt/annotations/src/java/org/hibernate/cfg/annotations/CollectionBinder.java
===================================================================
--- trunk/HibernateExt/annotations/src/java/org/hibernate/cfg/annotations/CollectionBinder.java 2007-07-12 16:04:21 UTC (rev 12759)
+++ trunk/HibernateExt/annotations/src/java/org/hibernate/cfg/annotations/CollectionBinder.java 2007-07-12 20:21:25 UTC (rev 12760)
@@ -847,7 +847,13 @@
}
PersistentClass pc = p.getPersistentClass();
String table;
- if (pc != associatedClass) {
+ if (pc == null) {
+ //we are touching a @IdClass property, the pc is not set
+ //this means pc == associatedClass
+ //TODO check whether @ManyToOne @JoinTable in @IdClass used for @OrderBy works: doh!
+ table = "";
+ }
+ else if (pc != associatedClass) {
table = pc.getTable().getQuotedName() + ".";
}
else {
Added: trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/Order.java
===================================================================
--- trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/Order.java (rev 0)
+++ trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/Order.java 2007-07-12 20:21:25 UTC (rev 12760)
@@ -0,0 +1,70 @@
+//$Id$
+package org.hibernate.test.annotations.onetomany;
+
+import java.util.LinkedHashSet;
+import java.util.Set;
+import java.util.List;
+import java.util.ArrayList;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+import javax.persistence.Table;
+
+ at Entity
+ at Table( name = "Order_tbl" )
+ at IdClass( OrderID.class )
+public class Order {
+ private String schoolId;
+ private Integer schoolIdSort;
+ private Integer academicYear;
+
+ private List<OrderItem> itemList = new ArrayList<OrderItem>();
+
+ public boolean equals(Object obj) {
+ return super.equals( obj );
+ }
+
+ public int hashCode() {
+ return 10;
+ }
+
+ @Id
+ public Integer getAcademicYear() {
+ return this.academicYear;
+ }
+
+ protected void setAcademicYear(Integer academicYear) {
+ this.academicYear = academicYear;
+ }
+
+ @Id
+ public String getSchoolId() {
+ return this.schoolId;
+ }
+
+ protected void setSchoolId(String schoolId) {
+ this.schoolId = schoolId;
+ }
+
+ @OneToMany( mappedBy = "order" )
+ @OrderBy( "dayNo desc" )
+ public List<OrderItem> getItemList() {
+ return this.itemList;
+ }
+
+ public void setItemList(List<OrderItem> itemList) {
+ this.itemList = itemList;
+ }
+
+ public Integer getSchoolIdSort() {
+ return this.schoolIdSort;
+ }
+
+ public void setSchoolIdSort(Integer schoolIdSort) {
+ this.schoolIdSort = schoolIdSort;
+ }
+
+
+}
\ No newline at end of file
Added: trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderByTest.java
===================================================================
--- trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderByTest.java (rev 0)
+++ trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderByTest.java 2007-07-12 20:21:25 UTC (rev 12760)
@@ -0,0 +1,52 @@
+//$Id$
+package org.hibernate.test.annotations.onetomany;
+
+import org.hibernate.test.annotations.TestCase;
+import org.hibernate.Session;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class OrderByTest extends TestCase {
+ public void testOrderByOnIdClassProperties() throws Exception {
+ Session s = openSession( );
+ s.getTransaction().begin();
+ Order o = new Order();
+ o.setAcademicYear( 2000 );
+ o.setSchoolId( "Supelec" );
+ o.setSchoolIdSort( 1 );
+ s.persist( o );
+ OrderItem oi1 = new OrderItem();
+ oi1.setAcademicYear( 2000 );
+ oi1.setDayName( "Monday" );
+ oi1.setSchoolId( "Supelec" );
+ oi1.setOrder( o );
+ oi1.setDayNo( 23 );
+ s.persist( oi1 );
+ OrderItem oi2 = new OrderItem();
+ oi2.setAcademicYear( 2000 );
+ oi2.setDayName( "Tuesday" );
+ oi2.setSchoolId( "Supelec" );
+ oi2.setOrder( o );
+ oi2.setDayNo( 30 );
+ s.persist( oi2 );
+ s.flush();
+ s.clear();
+
+ OrderID oid = new OrderID();
+ oid.setAcademicYear( 2000 );
+ oid.setSchoolId( "Supelec" );
+ o = (Order) s.get( Order.class, oid );
+ assertEquals( 30, o.getItemList().get( 0 ).getDayNo().intValue() );
+
+ s.getTransaction().rollback();
+ s.close();
+ }
+
+ protected Class[] getMappings() {
+ return new Class[] {
+ Order.class,
+ OrderItem.class
+ };
+ }
+}
Added: trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderID.java
===================================================================
--- trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderID.java (rev 0)
+++ trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderID.java 2007-07-12 20:21:25 UTC (rev 12760)
@@ -0,0 +1,31 @@
+//$Id$
+package org.hibernate.test.annotations.onetomany;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class OrderID implements Serializable {
+ private String schoolId;
+ private Integer academicYear;
+
+ @Column( name = "Academic_Yr" )
+ public Integer getAcademicYear() {
+ return this.academicYear;
+ }
+
+ public void setAcademicYear(Integer academicYear) {
+ this.academicYear = academicYear;
+ }
+
+ @Column( name = "School_Id" )
+ public String getSchoolId() {
+ return this.schoolId;
+ }
+
+ public void setSchoolId(String schoolId) {
+ this.schoolId = schoolId;
+ }
+}
\ No newline at end of file
Added: trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderItem.java
===================================================================
--- trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderItem.java (rev 0)
+++ trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderItem.java 2007-07-12 20:21:25 UTC (rev 12760)
@@ -0,0 +1,73 @@
+//$Id$
+package org.hibernate.test.annotations.onetomany;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.JoinColumns;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+ at Entity
+ at Table( name = "OrderItem_tbl" )
+ at IdClass( OrderItemID.class )
+public class OrderItem {
+ String schoolId;
+ Integer academicYear;
+ Integer dayNo;
+ String dayName;
+ private Order order;
+
+ @Id
+ public Integer getDayNo() {
+ return dayNo;
+ }
+
+ public void setDayNo(Integer dayNo) {
+ this.dayNo = dayNo;
+ }
+
+ @Id
+ public String getSchoolId() {
+ return schoolId;
+ }
+
+ public void setSchoolId(String schoolId) {
+ this.schoolId = schoolId;
+ }
+
+ @Id
+ public Integer getAcademicYear() {
+ return academicYear;
+ }
+
+ public void setAcademicYear(Integer academicYear) {
+ this.academicYear = academicYear;
+ }
+
+ @Column( name = "Day_Name" )
+ public String getDayName() {
+ return dayName;
+ }
+
+ public void setDayName(String dayName) {
+ this.dayName = dayName;
+ }
+
+ @ManyToOne( fetch = FetchType.LAZY )
+ @JoinColumns( {
+ @JoinColumn( name = "School_Id", referencedColumnName = "School_Id", insertable = false, updatable = false ),
+ @JoinColumn( name = "Academic_Yr", referencedColumnName = "Academic_Yr", insertable = false, updatable = false )
+ } )
+ public Order getOrder() {
+ return this.order;
+ }
+
+ public void setOrder(Order order) {
+ this.order = order;
+ }
+
+}
Added: trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderItemID.java
===================================================================
--- trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderItemID.java (rev 0)
+++ trunk/HibernateExt/annotations/src/test/org/hibernate/test/annotations/onetomany/OrderItemID.java 2007-07-12 20:21:25 UTC (rev 12760)
@@ -0,0 +1,41 @@
+//$Id$
+package org.hibernate.test.annotations.onetomany;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+
+/**
+ * @author Emmanuel Bernard
+ */
+public class OrderItemID implements Serializable {
+ String schoolId;
+ Integer academicYear;
+ Integer dayNo;
+
+ @Column( name = "Academic_Yr" )
+ public Integer getAcademicYear() {
+ return this.academicYear;
+ }
+
+ public void setAcademicYear(Integer academicYear) {
+ this.academicYear = academicYear;
+ }
+
+ @Column( name = "Day_No" )
+ public Integer getDayNo() {
+ return this.dayNo;
+ }
+
+ public void setDayNo(Integer dayNo) {
+ this.dayNo = dayNo;
+ }
+
+ @Column( name = "School_Id" )
+ public String getSchoolId() {
+ return this.schoolId;
+ }
+
+ public void setSchoolId(String schoolId) {
+ this.schoolId = schoolId;
+ }
+}
More information about the hibernate-commits
mailing list