org.hibernate.classic.Session#createQuery ( )源码实例Demo

下面列出了org.hibernate.classic.Session#createQuery ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: cacheonix-core   文件: FooBarTest.java
public void testPSCache() throws Exception {
	Session s = openSession();
	Transaction txn = s.beginTransaction();
	for ( int i=0; i<10; i++ ) s.save( new Foo() );
	Query q = s.createQuery("from Foo");
	q.setMaxResults(2);
	q.setFirstResult(5);
	assertTrue( q.list().size()==2 );
	q = s.createQuery("from Foo");
	assertTrue( q.list().size()==10 );
	assertTrue( q.list().size()==10 );
	q.setMaxResults(3);
	q.setFirstResult(3);
	assertTrue( q.list().size()==3 );
	q = s.createQuery("from Foo");
	assertTrue( q.list().size()==10 );
	txn.commit();
	s.close();

	s = openSession();
	txn = s.beginTransaction();
	q = s.createQuery("from Foo");
	assertTrue( q.list().size()==10 );
	q.setMaxResults(5);
	assertTrue( q.list().size()==5 );
	s.delete("from Foo");
	txn.commit();
	s.close();

}
 
源代码2 项目: cacheonix-core   文件: SQLFunctionsTest.java
public void testSetProperties() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save(simple, new Long(10) );
	Query q = s.createQuery("from Simple s where s.name=:name and s.count=:count");
	q.setProperties(simple);
	assertTrue( q.list().get(0)==simple );
	//misuse of "Single" as a propertyobject, but it was the first testclass i found with a collection ;)
	Single single = new Single() { // trivial hack to test properties with arrays.
		String[] getStuff() { return (String[]) getSeveral().toArray(new String[getSeveral().size()]); }
	};

	List l = new ArrayList();
	l.add("Simple 1");
	l.add("Slimeball");
	single.setSeveral(l);
	q = s.createQuery("from Simple s where s.name in (:several)");
	q.setProperties(single);
	assertTrue( q.list().get(0)==simple );


	q = s.createQuery("from Simple s where s.name in (:stuff)");
	q.setProperties(single);
	assertTrue( q.list().get(0)==simple );
	s.delete(simple);
	t.commit();
	s.close();
}
 
源代码3 项目: cacheonix-core   文件: SQLFunctionsTest.java
public void testSetPropertiesMap() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save(simple, new Long(10) );
	Map parameters = new HashMap();
	parameters.put("name", simple.getName());
	parameters.put("count", new Integer(simple.getCount()));
	
	Query q = s.createQuery("from Simple s where s.name=:name and s.count=:count");
	q.setProperties(((Map)parameters));
	assertTrue( q.list().get(0)==simple );
	
	List l = new ArrayList();
	l.add("Simple 1");
	l.add("Slimeball");
	parameters.put("several", l);
	q = s.createQuery("from Simple s where s.name in (:several)");
	q.setProperties(parameters);
	assertTrue( q.list().get(0)==simple );


	parameters.put("stuff", l.toArray(new String[0]));
	q = s.createQuery("from Simple s where s.name in (:stuff)");
	q.setProperties(parameters);
	assertTrue( q.list().get(0)==simple );
	s.delete(simple);
	t.commit();
	s.close();
}
 
public void testSetProperties() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save(simple, new Long(10) );
	Query q = s.createQuery("from Simple s where s.name=:name and s.count=:count");
	q.setProperties(simple);
	assertTrue( q.list().get(0)==simple );
	//misuse of "Single" as a propertyobject, but it was the first testclass i found with a collection ;)
	Single single = new Single() { // trivial hack to test properties with arrays.
		String[] getStuff() { return (String[]) getSeveral().toArray(new String[getSeveral().size()]); }
	};

	List l = new ArrayList();
	l.add("Simple 1");
	l.add("Slimeball");
	single.setSeveral(l);
	q = s.createQuery("from Simple s where s.name in (:several)");
	q.setProperties(single);
	assertTrue( q.list().get(0)==simple );


	q = s.createQuery("from Simple s where s.name in (:stuff)");
	q.setProperties(single);
	assertTrue( q.list().get(0)==simple );
	s.delete(simple);
	t.commit();
	s.close();
}
 
源代码5 项目: cacheonix-core   文件: BulkManipulationTest.java
public void testIncorrectSyntax() {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	try {
		s.createQuery( "update Human set Human.description = 'xyz' where Human.id = 1 and Human.description is null" );
		fail( "expected failure" );
	}
	catch( QueryException expected ) {
		// ignore : expected behavior
	}
	t.commit();
	s.close();
}
 
源代码6 项目: cacheonix-core   文件: FooBarTest.java
public void testQueryLockMode() throws Exception {

		Session s = openSession();
		Transaction tx = s.beginTransaction();
		Bar bar = new Bar();
		s.save(bar);
		s.flush();
		bar.setString("changed");
		Baz baz = new Baz();
		baz.setFoo(bar);
		s.save(baz);
		Query q = s.createQuery("from Foo foo, Bar bar");
		if ( !(getDialect() instanceof DB2Dialect) ) {
			q.setLockMode("bar", LockMode.UPGRADE);
		}
		Object[] result = (Object[]) q.uniqueResult();
		Object b = result[0];
		assertTrue( s.getCurrentLockMode(b)==LockMode.WRITE && s.getCurrentLockMode( result[1] )==LockMode.WRITE );
		tx.commit();
		s.disconnect();

		s.reconnect();
		tx = s.beginTransaction();
		assertTrue( s.getCurrentLockMode(b)==LockMode.NONE );
		s.find("from Foo foo");
		assertTrue( s.getCurrentLockMode(b)==LockMode.NONE );
		q = s.createQuery("from Foo foo");
		q.setLockMode("foo", LockMode.READ);
		q.list();
		assertTrue( s.getCurrentLockMode(b)==LockMode.READ);
		s.evict(baz);
		tx.commit();
		s.disconnect();
		
		s.reconnect();
		tx = s.beginTransaction();
		assertTrue( s.getCurrentLockMode(b)==LockMode.NONE );
		s.delete( s.load( Baz.class, baz.getCode() ) );
		assertTrue( s.getCurrentLockMode(b)==LockMode.NONE );
		tx.commit();
		s.close();

		s = openSession();
		tx = s.beginTransaction();
		q = s.createQuery("from Foo foo, Bar bar, Bar bar2");
		if ( !(getDialect() instanceof DB2Dialect) ) {
			q.setLockMode("bar", LockMode.UPGRADE);
		}
		q.setLockMode("bar2", LockMode.READ);
		result = (Object[]) q.list().get(0);
		if ( !(getDialect() instanceof DB2Dialect) ) {
			assertTrue( s.getCurrentLockMode( result[0] )==LockMode.UPGRADE && s.getCurrentLockMode( result[1] )==LockMode.UPGRADE );
		}
		s.delete( result[0] );
		tx.commit();
		s.close();
	}
 
源代码7 项目: cacheonix-core   文件: FooBarTest.java
public void testNamedParams() throws Exception {
	Bar bar = new Bar();
	Bar bar2 = new Bar();
	bar.setName("Bar");
	bar2.setName("Bar Two");
	bar.setX(10);
	bar2.setX(1000);Baz baz = new Baz();
	baz.setCascadingBars( new HashSet() );
	baz.getCascadingBars().add(bar);
	bar.setBaz(baz);

	Session s = openSession();
	Transaction txn = s.beginTransaction();
	s.save(baz);
	s.save(bar2);

	List list = s.find("from Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like 'Bar %'");
	Object row = list.iterator().next();
	assertTrue( row instanceof Object[] && ( (Object[]) row ).length==3 );

	Query q = s.createQuery("select bar, b from Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like 'Bar%'");
	list = q.list();
	if ( !(getDialect() instanceof SAPDBDialect) ) assertTrue( list.size()==2 );

	q = s.createQuery("select bar, b from Bar bar left join bar.baz baz left join baz.cascadingBars b where ( bar.name in (:nameList) or bar.name in (:nameList) ) and bar.string = :stringVal");
	HashSet nameList = new HashSet();
	nameList.add("bar");
	nameList.add("Bar");
	nameList.add("Bar Two");
	q.setParameterList("nameList", nameList);
	q.setParameter("stringVal", "a string");
	list = q.list();
	if ( !(getDialect() instanceof SAPDBDialect) ) assertTrue( list.size()==2 );

	try {
		q.setParameterList("nameList", (Collection)null);
		fail("Should throw an queryexception when passing a null!");
	} catch (QueryException qe) {
		//should happen
	}


	if (dialectSupportsEmptyInList("HQL 'x in (:name)'  with EMPTY_LIST.")) { 
			q.setParameterList("nameList", Collections.EMPTY_LIST);
		list = q.list();
		assertTrue( list.size()==0 );
	}

	q = s.createQuery("select bar, b from Bar bar inner join bar.baz baz inner join baz.cascadingBars b where bar.name like 'Bar%'");
	Object result = q.uniqueResult();
	assertTrue( result!=null );
	q = s.createQuery("select bar, b from Bar bar left join bar.baz baz left join baz.cascadingBars b where bar.name like :name and b.name like :name");
	q.setString("name", "Bar%");
	list = q.list();
	assertTrue( list.size()==1 );


	// This test added for issue HB-297 - there is an named parameter in the Order By clause
	q = s.createQuery("select bar from Bar bar order by ((bar.x - :valueX)*(bar.x - :valueX))");
	q.setInteger("valueX", bar.getX()+1);
	list = q.list();
	assertTrue( ((Bar)list.get(0)).getX() == bar.getX());
	q.setInteger("valueX", bar2.getX()+1);
	list = q.list();
	assertTrue( ((Bar)list.get(0)).getX() == bar2.getX());

	s.delete(baz);
	s.delete(bar2);
	txn.commit();
	s.close();
}
 
源代码8 项目: cacheonix-core   文件: FooBarTest.java
public void testScrollableIterator() throws Exception {
	if ( getDialect() instanceof DB2Dialect || getDialect() instanceof OracleDialect || getDialect() instanceof SybaseDialect || getDialect() instanceof HSQLDialect ) {
		Session s = openSession();
		Transaction txn = s.beginTransaction();
		s.save( new Foo() );
		s.save( new Foo() );
		s.save( new Foo() );
		s.save( new Bar() );
		Query query = s.createQuery("select f, f.integer from Foo f");
		assertTrue( query.getReturnTypes().length==2 );
		ScrollableResults iter = query.scroll();
		assertTrue( iter.next() );
		assertTrue( iter.scroll(1) );
		FooProxy f2 = (FooProxy) iter.get()[0];
		assertTrue( f2!=null );
		assertTrue( iter.scroll(-1) );
		Object f1 = iter.get(0);
		iter.next();
		assertTrue( f1!=null && iter.get(0)==f2 );
		iter.getInteger(1);

		assertTrue( !iter.scroll(100) );
		assertTrue( iter.first() );
		assertTrue( iter.scroll(3) );
		Object f4 = iter.get(0);
		assertTrue( f4!=null );
		assertTrue( !iter.next() );
		assertTrue( iter.first() );
		assertTrue( iter.get(0)==f1 );
		assertTrue( iter.last() );
		assertTrue( iter.get(0)==f4 );
		assertTrue( iter.previous() );
		txn.commit();
		s.close();

		s = openSession();
		txn = s.beginTransaction();
		query = s.createQuery("select f, f.integer from Foo f");
		assertTrue( query.getReturnTypes().length==2 );
		iter = query.scroll();
		assertTrue( iter.next() );
		assertTrue( iter.scroll(1) );
		f2 = (FooProxy) iter.get()[0];
		assertTrue( f2!=null );
		assertTrue( f2.getString()!=null  && f2.getComponent().getImportantDates().length > 0 );
		assertTrue( iter.scroll(-1) );
		f1 = iter.get(0);
		iter.next();
		assertTrue( f1!=null && iter.get(0)==f2 );
		iter.getInteger(1);

		assertTrue( !iter.scroll(100) );
		assertTrue( iter.first() );
		assertTrue( iter.scroll(3) );
		f4 = iter.get(0);
		assertTrue( f4!=null );
		assertTrue( !iter.next() );
		assertTrue( iter.first() );
		assertTrue( iter.get(0)==f1 );
		assertTrue( iter.last() );
		assertTrue( iter.get(0)==f4 );
		assertTrue( iter.previous() );
		assertTrue( s.delete("from Foo")==4 );
		s.flush();
		assertTrue( s.find("from java.lang.Object").size()==0 );
		txn.commit();
		s.close();
	}
}
 
源代码9 项目: cacheonix-core   文件: SQLFunctionsTest.java
public void testCachedQuery() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save( simple, new Long(10) );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Query q = s.createQuery("from Simple s where s.name=?");
	q.setCacheable(true);
	q.setString(0, "Simple 1");
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	q = s.createQuery("from Simple s where s.name=:name");
	q.setCacheable(true);
	q.setString("name", "Simple 1");
	assertTrue( q.list().size()==1 );
	simple = (Simple) q.list().get(0);

	q.setString("name", "Simple 2");
	assertTrue( q.list().size()==0 );
	assertTrue( q.list().size()==0 );
	simple.setName("Simple 2");
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s where s.name=:name");
	q.setString("name", "Simple 2");
	q.setCacheable(true);
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	s.update( simple, new Long(10) );
	s.delete(simple);
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s where s.name=?");
	q.setCacheable(true);
	q.setString(0, "Simple 1");
	assertTrue( q.list().size()==0 );
	assertTrue( q.list().size()==0 );
	t.commit();
	s.close();
}
 
源代码10 项目: cacheonix-core   文件: SQLFunctionsTest.java
public void testCachedQueryRegion() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save( simple, new Long(10) );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Query q = s.createQuery("from Simple s where s.name=?");
	q.setCacheRegion("foo");
	q.setCacheable(true);
	q.setString(0, "Simple 1");
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	q = s.createQuery("from Simple s where s.name=:name");
	q.setCacheRegion("foo");
	q.setCacheable(true);
	q.setString("name", "Simple 1");
	assertTrue( q.list().size()==1 );
	simple = (Simple) q.list().get(0);

	q.setString("name", "Simple 2");
	assertTrue( q.list().size()==0 );
	assertTrue( q.list().size()==0 );
	simple.setName("Simple 2");
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	s.update( simple, new Long(10) );
	s.delete(simple);
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s where s.name=?");
	q.setCacheRegion("foo");
	q.setCacheable(true);
	q.setString(0, "Simple 1");
	assertTrue( q.list().size()==0 );
	assertTrue( q.list().size()==0 );
	t.commit();
	s.close();
}
 
源代码11 项目: cacheonix-core   文件: SQLFunctionsTest.java
public void testCachedQueryOnInsert() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save( simple, new Long(10) );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Query q = s.createQuery("from Simple s");
	List list = q.setCacheable(true).list();
	assertTrue( list.size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s");
	list = q.setCacheable(true).list();
	assertTrue( list.size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Simple simple2 = new Simple();
	simple2.setCount(133);
	s.save( simple2, new Long(12) );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s");
	list = q.setCacheable(true).list();
	assertTrue( list.size()==2 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s");
	list = q.setCacheable(true).list();
	assertTrue( list.size()==2 );
	Iterator i = list.iterator();
	while ( i.hasNext() ) s.delete( i.next() );
	t.commit();
	s.close();

}
 
源代码12 项目: cacheonix-core   文件: FumTest.java
public void testCompositeIDQuery() throws Exception {
	Session s = openSession();
	Fum fee = new Fum( fumKey("fee",true) );
	fee.setFum("fee");
	s.save(fee);
	Fum fi = new Fum( fumKey("fi",true) );
	fi.setFum("fi");
	short fiShort = fi.getId().getShort();
	s.save(fi);
	Fum fo = new Fum( fumKey("fo",true) );
	fo.setFum("fo");
	s.save(fo);
	Fum fum = new Fum( fumKey("fum",true) );
	fum.setFum("fum");
	s.save(fum);
	s.flush();
	s.connection().commit();
	s.close();

	s = openSession();
	// Try to find the Fum object "fo" that we inserted searching by the string in the id
	List vList = s.find("from Fum fum where fum.id.string='fo'"  );
	assertTrue( "find by composite key query (find fo object)", vList.size() == 1 );
	fum = (Fum)vList.get(0);
	assertTrue( "find by composite key query (check fo object)", fum.getId().getString().equals("fo") );

	// Try to find the Fum object "fi" that we inserted searching by the date in the id
	vList = s.find("from Fum fum where fum.id.short = ?",new Short(fiShort),Hibernate.SHORT);
	assertTrue( "find by composite key query (find fi object)", vList.size() == 1 );
	fi = (Fum)vList.get(0);
	assertTrue( "find by composite key query (check fi object)", fi.getId().getString().equals("fi") );

	// Make sure we can return all of the objects by searching by the date id
	assertTrue(
		"find by composite key query with arguments",
		s.find("from Fum fum where fum.id.date <= ? and not fum.fum='FRIEND'",new Date(),Hibernate.DATE).size()==4
	);
	s.flush();
	s.connection().commit();
	s.close();

	s = openSession();
	assertTrue(
		s.iterate("select fum.id.short, fum.id.date, fum.id.string from Fum fum").hasNext()
	);
	assertTrue(
		s.iterate("select fum.id from Fum fum").hasNext()
	);
	Query qu = s.createQuery("select fum.fum, fum , fum.fum, fum.id.date from Fum fum");
	Type[] types = qu.getReturnTypes();
	assertTrue(types.length==4);
	for ( int k=0; k<types.length; k++) {
		assertTrue( types[k]!=null );
	}
	assertTrue(types[0] instanceof StringType);
	assertTrue(types[1] instanceof EntityType);
	assertTrue(types[2] instanceof StringType);
	assertTrue(types[3] instanceof DateType);
	Iterator iter = qu.iterate();
	int j = 0;
	while ( iter.hasNext() ) {
		j++;
		assertTrue( ( (Object[]) iter.next() )[1] instanceof Fum );
	}
	assertTrue( "iterate on composite key", j==8 );

	fum = (Fum) s.load( Fum.class, fum.getId() );
	s.filter( fum.getQuxArray(), "where this.foo is null" );
	s.filter( fum.getQuxArray(), "where this.foo.id = ?", "fooid", Hibernate.STRING );
	Query f = s.createFilter( fum.getQuxArray(), "where this.foo.id = :fooId" );
	f.setString("fooId", "abc");
	assertFalse( f.iterate().hasNext() );

	iter = s.iterate("from Fum fum where not fum.fum='FRIEND'");
	int i = 0;
	while ( iter.hasNext() ) {
		fum = (Fum) iter.next();
		//iter.remove();
		s.delete(fum);
		i++;
	}
	assertTrue( "iterate on composite key", i==4 );
	s.flush();

	s.iterate("from Fum fu, Fum fo where fu.fo.id.string = fo.id.string and fo.fum is not null");

	s.find("from Fumm f1 inner join f1.fum f2");

	s.connection().commit();
	s.close();
}
 
public void testCachedQuery() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save( simple, new Long(10) );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Query q = s.createQuery("from Simple s where s.name=?");
	q.setCacheable(true);
	q.setString(0, "Simple 1");
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	q = s.createQuery("from Simple s where s.name=:name");
	q.setCacheable(true);
	q.setString("name", "Simple 1");
	assertTrue( q.list().size()==1 );
	simple = (Simple) q.list().get(0);

	q.setString("name", "Simple 2");
	assertTrue( q.list().size()==0 );
	assertTrue( q.list().size()==0 );
	simple.setName("Simple 2");
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s where s.name=:name");
	q.setString("name", "Simple 2");
	q.setCacheable(true);
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	s.update( simple, new Long(10) );
	s.delete(simple);
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s where s.name=?");
	q.setCacheable(true);
	q.setString(0, "Simple 1");
	assertTrue( q.list().size()==0 );
	assertTrue( q.list().size()==0 );
	t.commit();
	s.close();
}
 
public void testCachedQueryRegion() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save( simple, new Long(10) );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Query q = s.createQuery("from Simple s where s.name=?");
	q.setCacheRegion("foo");
	q.setCacheable(true);
	q.setString(0, "Simple 1");
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	q = s.createQuery("from Simple s where s.name=:name");
	q.setCacheRegion("foo");
	q.setCacheable(true);
	q.setString("name", "Simple 1");
	assertTrue( q.list().size()==1 );
	simple = (Simple) q.list().get(0);

	q.setString("name", "Simple 2");
	assertTrue( q.list().size()==0 );
	assertTrue( q.list().size()==0 );
	simple.setName("Simple 2");
	assertTrue( q.list().size()==1 );
	assertTrue( q.list().size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	s.update( simple, new Long(10) );
	s.delete(simple);
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s where s.name=?");
	q.setCacheRegion("foo");
	q.setCacheable(true);
	q.setString(0, "Simple 1");
	assertTrue( q.list().size()==0 );
	assertTrue( q.list().size()==0 );
	t.commit();
	s.close();
}
 
public void testCachedQueryOnInsert() throws Exception {
	Session s = openSession();
	Transaction t = s.beginTransaction();
	Simple simple = new Simple();
	simple.setName("Simple 1");
	s.save( simple, new Long(10) );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Query q = s.createQuery("from Simple s");
	List list = q.setCacheable(true).list();
	assertTrue( list.size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s");
	list = q.setCacheable(true).list();
	assertTrue( list.size()==1 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	Simple simple2 = new Simple();
	simple2.setCount(133);
	s.save( simple2, new Long(12) );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s");
	list = q.setCacheable(true).list();
	assertTrue( list.size()==2 );
	t.commit();
	s.close();

	s = openSession();
	t = s.beginTransaction();
	q = s.createQuery("from Simple s");
	list = q.setCacheable(true).list();
	assertTrue( list.size()==2 );
	Iterator i = list.iterator();
	while ( i.hasNext() ) s.delete( i.next() );
	t.commit();
	s.close();

}