📄 subclasstest.java
字号:
//$Id: SubclassTest.java,v 1.2 2005/02/25 12:44:44 maxcsaucdk Exp $package org.hibernate.test.metadata.inheritance;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.test.metadata.TestCase;import org.hibernate.test.metadata.Plane;import org.hibernate.test.metadata.A320;import org.hibernate.test.metadata.A320b;/** * @author Emmanuel Bernard */public class SubclassTest extends TestCase { public SubclassTest(String x) { super(x); } public void testPolymorphism() throws Exception { Session s = openSession(); Transaction tx = s.beginTransaction(); Plane p = new Plane(); p.setNbrofSeats(10); A320 a = new A320(); a.setJavaEmbeddedVersion("5.0"); a.setNbrofSeats(300); s.persist(a); s.persist(p); tx.commit(); s.close(); s = openSession(); tx = s.beginTransaction(); Query q = s.createQuery("from " + A320.class.getName() ); List a320s = q.list(); assertNotNull(a320s); assertEquals( 1, a320s.size() ); assertTrue(a320s.get(0) instanceof A320); assertEquals( "5.0", ( (A320) a320s.get(0) ).getJavaEmbeddedVersion()); q = s.createQuery("from " + Plane.class.getName() ); List planes = q.list(); assertNotNull(planes); assertEquals( 2, planes.size() ); tx.commit(); s.close(); } public void test2ndLevelSubClass() throws Exception { Session s = openSession(); Transaction tx = s.beginTransaction(); A320b a = new A320b(); a.setJavaEmbeddedVersion("Elephant"); a.setNbrofSeats(300); s.persist(a); tx.commit(); s.close(); s = openSession(); tx = s.beginTransaction(); Query q = s.createQuery("from " + A320.class.getName() + " as a where a.javaEmbeddedVersion = :version"); q.setString("version", "Elephant"); List a320s = q.list(); assertNotNull(a320s); assertEquals( 1, a320s.size() ); tx.commit(); s.close(); } public void testInheritedAttributes() throws Exception { Session s = openSession(); Transaction tx = s.beginTransaction(); Plane p = new Plane(); p.setAltitude(10000); p.setMetricAltitude(3000); p.setNbrofSeats(150); s.persist(p); tx.commit(); s.close(); s = openSession(); tx = s.beginTransaction(); p = (Plane) s.get( Plane.class, p.getId() ); assertNotNull(p); assertEquals( 150, p.getNbrofSeats() ); assertEquals( 10000, p.getAltitude() ); assertFalse( 3000 == p.getMetricAltitude() ); tx.commit(); s.close(); } public void testDefault() throws Exception { Session s; Transaction tx; s = openSession(); tx = s.beginTransaction(); Fruit f = new Fruit(); Apple a = new Apple(); s.persist(f); s.persist(a); tx.commit(); s.close(); s = openSession(); tx = s.beginTransaction(); List result = s.createCriteria(Fruit.class).list(); assertNotNull(result); assertEquals( 2, result.size() ); Fruit f2 = (Fruit) result.get(0); checkClassType(f2, f, a); f2 = (Fruit) result.get(1); checkClassType(f2, f, a); tx.commit(); s.close(); } private void checkClassType(Fruit fruitToTest, Fruit f, Apple a) { if ( fruitToTest.getId().equals( f.getId() ) ) { assertFalse(fruitToTest instanceof Apple); } else if ( fruitToTest.getId().equals( a.getId() ) ) { assertTrue(fruitToTest instanceof Apple); } else { fail("Result does not contains the previously inserted elements"); } } /** * @see org.hibernate.test.metadata.TestCase#getMappings() */ protected Class[] getMappings() { return new Class[] { Plane.class, A320.class, A320b.class, Fruit.class, Apple.class }; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -