[hibernate-commits] Hibernate SVN: r17530 - in core/trunk/annotations/src: test/java/org/hibernate/test/annotations/query and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Tue Sep 22 13:19:24 EDT 2009


Author: epbernard
Date: 2009-09-22 13:19:24 -0400 (Tue, 22 Sep 2009)
New Revision: 17530

Added:
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/Darkness.java
Modified:
   core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/Night.java
   core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/QueryAndSQLTest.java
Log:
HHH-4364 support @NamedQuery on a @MappedSuperclass (Sharath Reddy)

Modified: core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java
===================================================================
--- core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java	2009-09-19 19:59:46 UTC (rev 17529)
+++ core/trunk/annotations/src/main/java/org/hibernate/cfg/AnnotationBinder.java	2009-09-22 17:19:24 UTC (rev 17530)
@@ -429,6 +429,12 @@
 		//TODO: be more strict with secondarytable allowance (not for ids, not for secondary table join columns etc)
 		InheritanceState inheritanceState = inheritanceStatePerClass.get( clazzToProcess );
 		AnnotatedClassType classType = mappings.getClassType( clazzToProcess );
+		
+		//Queries declared in MappedSuperclass should be usable in Subclasses
+		if ( AnnotatedClassType.EMBEDDABLE_SUPERCLASS.equals( classType )) {
+			bindQueries(clazzToProcess, mappings );
+		}
+		
 		if ( AnnotatedClassType.EMBEDDABLE_SUPERCLASS.equals( classType ) //will be processed by their subentities
 				|| AnnotatedClassType.NONE.equals( classType ) //to be ignored
 				|| AnnotatedClassType.EMBEDDABLE.equals( classType ) //allow embeddable element declaration

Added: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/Darkness.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/Darkness.java	                        (rev 0)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/Darkness.java	2009-09-22 17:19:24 UTC (rev 17530)
@@ -0,0 +1,13 @@
+package org.hibernate.test.annotations.query;
+
+import javax.persistence.MappedSuperclass;
+
+ at org.hibernate.annotations.NamedQuery(
+		name = "night.olderThan", 
+		query = "select n from Night n where n.date <= :date"
+)
+
+ at MappedSuperclass
+public class Darkness {
+
+}

Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/Night.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/Night.java	2009-09-19 19:59:46 UTC (rev 17529)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/Night.java	2009-09-22 17:19:24 UTC (rev 17530)
@@ -21,7 +21,7 @@
 		query = "select n from Night n where n.duration = :duration",
 		cacheable = true, cacheRegion = "nightQuery"
 )
-public class Night {
+public class Night extends Darkness {
 	private Integer id;
 	private long duration;
 	private Date date;

Modified: core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/QueryAndSQLTest.java
===================================================================
--- core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/QueryAndSQLTest.java	2009-09-19 19:59:46 UTC (rev 17529)
+++ core/trunk/annotations/src/test/java/org/hibernate/test/annotations/query/QueryAndSQLTest.java	2009-09-22 17:19:24 UTC (rev 17530)
@@ -6,6 +6,7 @@
 import java.util.GregorianCalendar;
 import java.util.List;
 
+import org.hibernate.MappingException;
 import org.hibernate.Query;
 import org.hibernate.Session;
 import org.hibernate.Transaction;
@@ -110,6 +111,17 @@
 		s.close();
 	}
 
+	public void testImportQueryFromMappedSuperclass() {
+		Session s = openSession();
+		try {
+			s.getNamedQuery( "night.olderThan" );
+		}
+		catch(MappingException ex) {
+			assertTrue("Query imported from MappedSuperclass", false);
+		}
+		s.close();
+	}
+	
 	public void testSQLQueryWithManyToOne() {
 		Night n = new Night();
 		Calendar c = new GregorianCalendar();



More information about the hibernate-commits mailing list