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.dialect.Oracle8iDialect;
import org.hibernate.dialect.SybaseASE15Dialect;
import org.hibernate.junit.SkipForDialect;
import org.hibernate.test.annotations.TestCase;
/**
* Unit Test for JBPAPP-6311 - Filters defined in superclass are not inherited in subclasses
* @author Alessandro Lazarotti <alessandrolt2@gmail.com>
*/
// Skip Oracle. The filter query in Animal is invalid for Oracle only.
@SkipForDialect(jiraKey="JBPAPP-9896",value={Oracle8iDialect.class})
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();
}
@SuppressWarnings("unchecked")
public void testChildWithFilter() {
session = openSession();
session.beginTransaction();
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.getTransaction().commit();
session.close();
}
@SuppressWarnings("unchecked")
public void testChildWithoutFilter() {
session = openSession();
session.beginTransaction();
List<Animal> result = session.createCriteria(Cat.class).list();
System.out.println("testChildWithoutFilter");
Assert.assertEquals(2, result.size());
session.getTransaction().commit();
session.close();
}
@SuppressWarnings("unchecked")
public void testParentWithFilter() {
session = openSession();
session.beginTransaction();
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.getTransaction().commit();
session.close();
}
@SuppressWarnings("unchecked")
public void testParentWithoutFilter() {
session = openSession();
session.beginTransaction();
System.out.println("testParentWithoutFilter");
List<Animal> result = session.createCriteria(Animal.class).list();
Assert.assertEquals(2, result.size());
session.getTransaction().commit();
session.close();
}
@Override
protected Class<?>[] getAnnotatedClasses() {
return new Class[]{
Animal.class,
Cat.class
};
}
}