/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.test.hql; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import org.junit.Test; import static junit.framework.TestCase.assertEquals; /** * Tests the "treat" keyword in HQL. * * @author Etienne Miret * @author Steve Ebersole * * @see org.hibernate.test.jpa.ql.TreatKeywordTest */ public class TreatKeywordTest extends BaseCoreFunctionalTestCase { @Override public String[] getMappings() { return new String[] { "hql/Animal.hbm.xml" }; } @Test @TestForIssue( jiraKey = "HHH-9342" ) public void memberOfTreatTest() { // prepare test data Session s = openSession(); s.getTransaction().begin(); Human owner = new Human(); s.persist( owner ); Dog wildDog = new Dog(); s.persist( wildDog ); Dog petDog = new Dog(); petDog.setOwner( owner ); s.persist( petDog ); Cat petCat = new Cat(); petCat.setOwner( owner ); s.persist( petCat ); s.getTransaction().commit(); s.close(); // perform test s = openSession(); s.getTransaction().begin(); Query q = s.createQuery( "select pet" + " from Animal pet, Animal owner" + " where pet member of treat (owner as Human).pets" ); @SuppressWarnings("unchecked") List<Animal> results = q.list(); assertEquals( 2, results.size() ); s.getTransaction().commit(); s.close(); // clean up test data s = openSession(); s.getTransaction().begin(); s.delete( petCat ); s.delete( petDog ); s.delete( wildDog ); s.delete( owner ); s.getTransaction().commit(); s.close(); } }