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;
+
+(a)org.hibernate.annotations.NamedQuery(
+ name = "night.olderThan",
+ query = "select n from Night n where n.date <= :date"
+)
+
+@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();
Show replies by date