/* * 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.annotations.polymorphism; import org.junit.Test; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import static org.junit.Assert.assertEquals; /** * @author Emmanuel Bernard * @author Brett Meyer */ public class PolymorphismTest extends BaseCoreFunctionalTestCase { @Test public void testPolymorphism() throws Exception { Car car = new Car(); car.setModel( "SUV" ); SportCar car2 = new SportCar(); car2.setModel( "350Z" ); Session s = openSession(); Transaction tx = s.beginTransaction(); s.persist( car ); s.persist( car2 ); s.flush(); assertEquals( 2, s.createQuery( "select car from Car car").list().size() ); assertEquals( 0, s.createQuery( "select count(m) from " + Automobile.class.getName() + " m").list().size() ); tx.rollback(); s.close(); } @Test @TestForIssue(jiraKey = "HHH-7915") public void testNonPkInheritedFk() throws Exception { MarketRegion region1 = new MarketRegion(); region1.setRegionCode( "US" ); MarketRegion region2 = new MarketRegion(); region2.setRegionCode( "EU" ); Car car = new Car(); car.setModel( "SUV" ); car.setMarketRegion( region1 ); SportCar car2 = new SportCar(); car2.setModel( "350Z" ); car2.setMarketRegion( region2 ); Session s = openSession(); Transaction tx = s.beginTransaction(); s.persist( region1 ); s.persist( region2 ); s.persist( car ); s.persist( car2 ); s.flush(); assertEquals( 1, s.createQuery( "select car from Car car where car.marketRegion.regionCode='US'") .list().size() ); assertEquals( 1, s.createQuery( "select car from SportCar car where car.marketRegion.regionCode='EU'") .list().size() ); tx.rollback(); s.close(); } @Override protected Class[] getAnnotatedClasses() { return new Class[] { Car.class, SportCar.class, MarketRegion.class }; } }