Author: alessandrolt
Date: 2011-08-29 17:49:22 -0400 (Mon, 29 Aug 2011)
New Revision: 20976
Added:
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/Animal.java
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/Cat.java
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/InheritedFilterTest.java
Log:
JBPAPP-6311 Filters defined in superclass are not inherited in subclasses
Added:
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/Animal.java
===================================================================
---
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/Animal.java
(rev 0)
+++
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/Animal.java 2011-08-29
21:49:22 UTC (rev 20976)
@@ -0,0 +1,59 @@
+package org.hibernate.test.annotations.filters;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.MappedSuperclass;
+
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
+import org.hibernate.annotations.ParamDef;
+
+
+
+@FilterDef(name="age_gt_10",
+ parameters={ @ParamDef(name="age", type="int")})
+
+@Filter(name="age_gt_10",
+ condition= ":age < (select a.age from Cat as a where a.id=ID)" )
+
+@MappedSuperclass
+public abstract class Animal {
+
+ @Id @GeneratedValue
+ private Long id;
+
+ @Column(name="name")
+ private String name;
+
+ @Column(name="age")
+ private int age;
+
+ public Long getId() {
+ return id;
+ }
+ public void setId(Long id) {
+ this.id = id;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public int getAge() {
+ return age;
+ }
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+
+
+
+
+}
Added:
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/Cat.java
===================================================================
---
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/Cat.java
(rev 0)
+++
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/Cat.java 2011-08-29
21:49:22 UTC (rev 20976)
@@ -0,0 +1,31 @@
+package org.hibernate.test.annotations.filters;
+
+import javax.persistence.Entity;
+
+import org.hibernate.annotations.Filter;
+import org.hibernate.annotations.FilterDef;
+import org.hibernate.annotations.ParamDef;
+
+
+@Entity
+public class Cat extends Animal{
+
+ private Boolean domestic;
+
+ public Cat(){}
+
+ public Cat(String name, int age, Boolean domestic){
+ super.setName(name);
+ super.setAge(age);
+ this.setDomestic(domestic);
+ }
+
+ public void setDomestic(Boolean domestic) {
+ this.domestic = domestic;
+ }
+
+ public Boolean isDomestic() {
+ return domestic;
+ }
+
+}
Added:
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/InheritedFilterTest.java
===================================================================
---
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/InheritedFilterTest.java
(rev 0)
+++
annotations/branches/v3_4_0_GA_CP/src/test/java/org/hibernate/test/annotations/filters/InheritedFilterTest.java 2011-08-29
21:49:22 UTC (rev 20976)
@@ -0,0 +1,96 @@
+package org.hibernate.test.annotations.filters;
+
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.hibernate.Filter;
+import org.hibernate.Session;
+import org.hibernate.Transaction;
+import org.hibernate.test.annotations.TestCase;
+
+/**
+ * Unit Test for JBPAPP-6311 - Filters defined in superclass are not inherited in
subclasses
+ * @author Alessandro Lazarotti <alessandrolt2(a)gmail.com>
+ */
+public class InheritedFilterTest extends TestCase {
+
+ Cat tom;
+ Animal garfield;
+ Session session;
+
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ session = openSession();
+
+ final Transaction tx = session.beginTransaction();
+ tom = new Cat("Tom", 10, true);
+ garfield = new Cat("Garfield", 15, true);
+ session.save(tom);
+ session.save(garfield);
+ tx.commit();
+
+ session.close();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ session = openSession();
+ session.delete(tom);
+ session.delete(garfield);
+ session.close();
+
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testChildWithFilter() {
+ session = openSession();
+ Filter filter = session.enableFilter("age_gt_10");
+ filter.setParameter("age", 10);
+ System.out.println("testChildWithFilter");
+ List<Animal> result = session.createCriteria(Cat.class).list();
+ Assert.assertEquals(1, result.size());
+ session.close();
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testChildWithoutFilter() {
+ session = openSession();
+ List<Animal> result = session.createCriteria(Cat.class).list();
+ System.out.println("testChildWithoutFilter");
+ Assert.assertEquals(2, result.size());
+ session.close();
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testParentWithFilter() {
+ session = openSession();
+ Filter filter = session.enableFilter("age_gt_10");
+ filter.setParameter("age", 10);
+ System.out.println("testParentWithFilter");
+ List<Animal> result = session.createCriteria(Animal.class).list();
+ Assert.assertEquals(1, result.size());
+ session.close();
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testParentWithoutFilter() {
+ session = openSession();
+ System.out.println("testParentWithoutFilter");
+ List<Animal> result = session.createCriteria(Animal.class).list();
+ Assert.assertEquals(2, result.size());
+ session.close();
+ }
+
+ @Override
+ protected Class<?>[] getAnnotatedClasses() {
+ return new Class[]{
+ Animal.class,
+ Cat.class
+ };
+ }
+
+}
Show replies by date