⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queryandsqltest.java

📁 hibernate3.2.6源码和jar包
💻 JAVA
字号:
//$Id: QueryAndSQLTest.java 14399 2008-03-06 22:19:34Z epbernard $package org.hibernate.test.annotations.query;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import org.hibernate.stat.Statistics;import org.hibernate.test.annotations.A320;import org.hibernate.test.annotations.A320b;import org.hibernate.test.annotations.Plane;import org.hibernate.test.annotations.TestCase;/** * Test named queries * * @author Emmanuel Bernard */public class QueryAndSQLTest extends TestCase {	public QueryAndSQLTest(String x) {		super( x );	}	public void testPackageQueries() throws Exception {		Session s = openSession();		Transaction tx = s.beginTransaction();		Plane p = new Plane();		s.persist( p );		Query q = s.getNamedQuery( "plane.getAll" );		assertEquals( 1, q.list().size() );		tx.commit();		s.close();	}	public void testClassQueries() throws Exception {		Session s = openSession();		Transaction tx = s.beginTransaction();		Night n = new Night();		Calendar c = new GregorianCalendar();		c.set( 2000, 2, 2 );		Date now = c.getTime();		c.add( Calendar.MONTH, -1 );		Date aMonthAgo = c.getTime();		c.add( Calendar.MONTH, 2 );		Date inAMonth = c.getTime();		n.setDate( now );		n.setDuration( 14 );		s.persist( n );		tx.commit();		s.close();		s = openSession();		tx = s.beginTransaction();		Query q = s.getNamedQuery( "night.moreRecentThan" );		q.setDate( "date", aMonthAgo );		assertEquals( 1, q.list().size() );		q = s.getNamedQuery( "night.moreRecentThan" );		q.setDate( "date", inAMonth );		assertEquals( 0, q.list().size() );		Statistics stats = getSessions().getStatistics();		stats.setStatisticsEnabled( true );		stats.clear();		q = s.getNamedQuery( "night.duration" );		q.setParameter( "duration", 14l );		assertEquals( 1, q.list().size() );		assertEquals( 1, stats.getQueryCachePutCount() );		q = s.getNamedQuery( "night.duration" );		q.setParameter( "duration", 14l );		s.delete( q.list().get( 0 ) );		assertEquals( 1, stats.getQueryCacheHitCount() );		tx.commit();		s.close();	}	public void testSQLQuery() {		Night n = new Night();		Calendar c = new GregorianCalendar();		c.set( 2000, 2, 2 );		Date now = c.getTime();		c.add( Calendar.MONTH, -1 );		Date aMonthAgo = c.getTime();		c.add( Calendar.MONTH, 2 );		Date inAMonth = c.getTime();		n.setDate( now );		n.setDuration( 9999 );		Area area = new Area();		area.setName( "Monceau" );		Session s = openSession();		Transaction tx = s.beginTransaction();		s.persist( n );		s.persist( area );		tx.commit();		s.clear();		tx = s.beginTransaction();		Query q = s.getNamedQuery( "night.getAll.bySQL" );		q.setParameter( 0, 9990 );		List result = q.list();		assertEquals( 1, result.size() );		Night n2 = (Night) result.get( 0 );		assertEquals( n2.getDuration(), n.getDuration() );		List areas = s.getNamedQuery( "getAreaByNative" ).list();		assertTrue( 1 == areas.size() );		assertEquals( area.getName(), ( (Area) areas.get( 0 ) ).getName() );		tx.commit();		s.close();	}	public void testSQLQueryWithManyToOne() {		Night n = new Night();		Calendar c = new GregorianCalendar();		c.set( 2000, 2, 2 );		Date now = c.getTime();		c.add( Calendar.MONTH, -1 );		Date aMonthAgo = c.getTime();		c.add( Calendar.MONTH, 2 );		Date inAMonth = c.getTime();		n.setDate( now );		n.setDuration( 9999 );		Area a = new Area();		a.setName( "Paris" );		n.setArea( a );		Session s = openSession();		Transaction tx = s.beginTransaction();		s.persist( a );		s.persist( n );		tx.commit();		s.close();		s = openSession();		tx = s.beginTransaction();		Statistics stats = getSessions().getStatistics();		stats.setStatisticsEnabled( true );		Query q = s.getNamedQuery( "night&areaCached" );		List result = q.list();		assertEquals( 1, result.size() );		assertEquals( 1, stats.getQueryCachePutCount() );		q.list();		assertEquals( 1, stats.getQueryCacheHitCount() );		Night n2 = (Night) ( (Object[]) result.get( 0 ) )[0];		assertEquals( n2.getDuration(), n.getDuration() );		tx.commit();		s.close();	}	public void testImplicitNativeQuery() throws Exception {		Session s;		Transaction tx;		s = openSession();		tx = s.beginTransaction();		SpaceShip ship = new SpaceShip();		ship.setModel( "X-Wing" );		ship.setName( "YuBlue" );		ship.setSpeed( 2000 );		ship.setDimensions( new Dimensions() );		s.persist( ship );		tx.commit();		s.clear();		tx = s.beginTransaction();		Query q = s.getNamedQuery( "implicitSample" );		List result = q.list();		assertEquals( 1, result.size() );		assertEquals( ship.getModel(), ( (SpaceShip) result.get( 0 ) ).getModel() );		s.delete( result.get( 0 ) );		tx.commit();		s.close();	}	public void testNativeQueryAndCompositePKAndComponents() throws Exception {		Session s;		Transaction tx;		s = openSession();		tx = s.beginTransaction();		SpaceShip ship = new SpaceShip();		ship.setModel( "X-Wing" );		ship.setName( "YuBlue" );		ship.setSpeed( 2000 );		ship.setDimensions( new Dimensions() );		ship.getDimensions().setLength( 10 );		ship.getDimensions().setWidth( 5 );		Captain captain = new Captain();		captain.setFirstname( "Luke" );		captain.setLastname( "Skywalker" );		ship.setCaptain( captain );		s.persist( captain );		s.persist( ship );		tx.commit();		s.clear();		tx = s.beginTransaction();		Query q = s.getNamedQuery( "compositekey" );		List result = q.list();		assertEquals( 1, result.size() );		Object[] row = (Object[]) result.get( 0 );		SpaceShip spaceShip = (SpaceShip) row[0];		assertEquals( ship.getModel(), spaceShip.getModel() );		assertNotNull( spaceShip.getDimensions() );		assertEquals( ship.getDimensions().getWidth(), spaceShip.getDimensions().getWidth() );		assertEquals( ship.getDimensions().getLength(), spaceShip.getDimensions().getLength() );		assertEquals( ship.getCaptain().getFirstname(), ship.getCaptain().getFirstname() );		assertEquals( ship.getCaptain().getLastname(), ship.getCaptain().getLastname() );		//FIXME vary depending on databases		assertTrue( row[1].toString().startsWith( "50" ) );		assertTrue( row[2].toString().startsWith( "500" ) );		s.delete( spaceShip.getCaptain() );		s.delete( spaceShip );		tx.commit();		s.close();	}	public void testDiscriminator() throws Exception {		Session s;		Transaction tx;		s = openSession();		tx = s.beginTransaction();		Dictionary dic = new Dictionary();		dic.setName( "Anglais-Francais" );		dic.setEditor( "Harrap's" );		SynonymousDictionary syn = new SynonymousDictionary();		syn.setName( "Synonymes de tous les temps" );		syn.setEditor( "Imagination edition" );		s.persist( dic );		s.persist( syn );		tx.commit();		s.clear();		tx = s.beginTransaction();		List results = s.getNamedQuery( "all.dictionaries" ).list();		assertEquals( 2, results.size() );		assertTrue(				results.get( 0 ) instanceof SynonymousDictionary						|| results.get( 1 ) instanceof SynonymousDictionary		);		tx.commit();		s.close();	}//	public void testScalarQuery() throws Exception {//        Session s = openSession();//		Transaction tx;//		tx = s.beginTransaction();//		Mark bad = new Mark();//		bad.value = 5;//		Mark good = new Mark();//		good.value = 15;//		s.persist(bad);//		s.persist(good);//		tx.commit();//		s.clear();//		tx = s.beginTransaction();//		List result = s.getNamedQuery("average").list();//		assertEquals( 1, result.size() );//		tx.commit();//		s.close();////	}	public void testCache() throws Exception {		Session s;		Transaction tx;		s = openSession();		tx = s.beginTransaction();		Plane plane = new Plane();		plane.setNbrOfSeats( 5 );		s.persist( plane );		tx.commit();		s.close();		getSessions().getStatistics().clear();		getSessions().getStatistics().setStatisticsEnabled( true );		s = openSession();		tx = s.beginTransaction();		Query query = s.getNamedQuery( "plane.byId" ).setParameter( "id", plane.getId() );		plane = (Plane) query.uniqueResult();		assertEquals( 1, getSessions().getStatistics().getQueryCachePutCount() );		plane = (Plane) s.getNamedQuery( "plane.byId" ).setParameter( "id", plane.getId() ).uniqueResult();		assertEquals( 1, getSessions().getStatistics().getQueryCacheHitCount() );		tx.commit();		s.close();		s = openSession();		tx = s.beginTransaction();		s.delete( s.get( Plane.class, plane.getId() ) );		tx.commit();		s.close();	}	public void testEntitySQLOverriding() {		Session s;		Transaction tx;		s = openSession();		tx = s.beginTransaction();		Chaos chaos = new Chaos();		chaos.setSize( 123l );		chaos.setId( 1l );		String lowerName = "hello";		String upperName = lowerName.toUpperCase();		assertFalse( lowerName.equals( upperName ) );		chaos.setName( "hello" );		chaos.setNickname( "NickName" );		s.persist( chaos );		s.flush();		s.clear();		s.getSessionFactory().evict( Chaos.class );		Chaos resultChaos = (Chaos) s.load( Chaos.class, chaos.getId() );		assertEquals( upperName, resultChaos.getName() );		assertEquals( "nickname", resultChaos.getNickname() );		tx.rollback();		s.close();	}	public void testCollectionSQLOverriding() {		Session s;		Transaction tx;		s = openSession();		tx = s.beginTransaction();		Chaos chaos = new Chaos();		chaos.setSize( 123l );		chaos.setId( 1l );		chaos.setName( "hello" );		s.persist( chaos );		CasimirParticle p = new CasimirParticle();		p.setId( 1l );		s.persist( p );		chaos.getParticles().add(p);		p = new CasimirParticle();		p.setId( 2l );		s.persist( p );		chaos.getParticles().add(p);		s.flush();		s.clear();		s.getSessionFactory().evict( Chaos.class );		Chaos resultChaos = (Chaos) s.load( Chaos.class, chaos.getId() );		assertEquals( 2, resultChaos.getParticles().size() );		resultChaos.getParticles().remove( resultChaos.getParticles().iterator().next() );		resultChaos.getParticles().remove( resultChaos.getParticles().iterator().next() );		s.flush();		s.clear();		resultChaos = (Chaos) s.load( Chaos.class, chaos.getId() );		assertEquals( 0, resultChaos.getParticles().size() );		tx.rollback();		s.close();	}	protected Class[] getMappings() {		return new Class[]{				Plane.class,				A320.class,				A320b.class,				Night.class,				Area.class,				SpaceShip.class,				Dictionary.class,				SynonymousDictionary.class,				Captain.class,				Chaos.class,				CasimirParticle.class		};	}	protected String[] getAnnotatedPackages() {		return new String[]{				"org.hibernate.test.annotations.query"		};	}	@Override	protected String[] getXmlFiles() {		return new String[]{				"org/hibernate/test/annotations/query/orm.xml"		};	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -