📄 foobartest.java
字号:
s.close(); } public void testQueryLockMode() throws Exception { Session s = openSession(); 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 ); s.flush(); s.connection().commit(); s.disconnect(); s.reconnect(); 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); s.connection().commit(); s.disconnect(); s.reconnect(); assertTrue( s.getCurrentLockMode(b)==LockMode.NONE ); s.delete( s.load( Baz.class, baz.getCode() ) ); assertTrue( s.getCurrentLockMode(b)==LockMode.NONE ); s.flush(); s.connection().commit(); s.close(); s = openSession(); 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] ); s.flush(); s.connection().commit(); s.close(); } public void testManyToManyBag() throws Exception { Session s = openSession(); Baz baz = new Baz(); Serializable id = s.save(baz); s.flush(); s.connection().commit(); s.close(); s = openSession(); baz = (Baz) s.load(Baz.class, id); baz.getFooBag().add( new Foo() ); s.flush(); s.connection().commit(); s.close(); s = openSession(); baz = (Baz) s.load(Baz.class, id); assertTrue( !Hibernate.isInitialized( baz.getFooBag() ) ); assertTrue( baz.getFooBag().size()==1 ); if ( !(getDialect() instanceof HSQLDialect) ) assertTrue( Hibernate.isInitialized( baz.getFooBag().iterator().next() ) ); s.delete(baz); s.flush(); s.connection().commit(); s.close(); } public void testIdBag() throws Exception { Session s = openSession(); Baz baz = new Baz(); s.save(baz); List l = new ArrayList(); List l2 = new ArrayList(); baz.setIdFooBag(l); baz.setByteBag(l2); l.add( new Foo() ); l.add( new Bar() ); byte[] bytes = "ffo".getBytes(); l2.add(bytes); l2.add( "foo".getBytes() ); s.flush(); l.add( new Foo() ); l.add( new Bar() ); l2.add( "bar".getBytes() ); s.flush(); s.delete( l.remove(3) ); bytes[1]='o'; s.flush(); s.connection().commit(); s.close(); s = openSession(); baz = (Baz) s.load(Baz.class, baz.getCode()); assertTrue( baz.getIdFooBag().size()==3 ); assertTrue( baz.getByteBag().size()==3 ); bytes = "foobar".getBytes(); Iterator iter = baz.getIdFooBag().iterator(); while ( iter.hasNext() ) s.delete( iter.next() ); baz.setIdFooBag(null); baz.getByteBag().add(bytes); baz.getByteBag().add(bytes); assertTrue( baz.getByteBag().size()==5 ); s.flush(); s.connection().commit(); s.close(); s = openSession(); baz = (Baz) s.load(Baz.class, baz.getCode()); assertTrue( baz.getIdFooBag().size()==0 ); assertTrue( baz.getByteBag().size()==5 ); baz.getIdFooBag().add( new Foo() ); iter = baz.getByteBag().iterator(); iter.next(); iter.remove(); s.flush(); s.connection().commit(); s.close(); s = openSession(); baz = (Baz) s.load(Baz.class, baz.getCode()); assertTrue( baz.getIdFooBag().size()==1 ); assertTrue( baz.getByteBag().size()==4 ); s.delete(baz); s.flush(); s.connection().commit(); s.close(); } public void testForceOuterJoin() throws Exception { if ( !( (SessionFactoryImplementor) getSessions() ).isOuterJoinedFetchEnabled() ) return; Session s = openSession(); Glarch g = new Glarch(); FooComponent fc = new FooComponent(); fc.setGlarch(g); FooProxy f = new Foo(); FooProxy f2 = new Foo(); f.setComponent(fc); f.setFoo(f2); s.save(f2); Serializable id = s.save(f); Serializable gid = s.getIdentifier( f.getComponent().getGlarch() ); s.flush(); s.connection().commit(); s.close(); getSessions().evict(Foo.class); s = openSession(); f = (FooProxy) s.load(Foo.class, id); assertFalse( Hibernate.isInitialized(f) ); assertTrue( Hibernate.isInitialized( f.getComponent().getGlarch() ) ); //outer-join="true" assertFalse( Hibernate.isInitialized( f.getFoo() ) ); //outer-join="auto" assertEquals( s.getIdentifier( f.getComponent().getGlarch() ), gid ); s.delete(f); s.delete( f.getFoo() ); s.flush(); s.connection().commit(); s.close(); } public void testEmptyCollection() throws Exception { Session s = openSession(); Serializable id = s.save( new Baz() ); s.flush(); s.connection().commit(); s.close(); s = openSession(); Baz baz = (Baz) s.load(Baz.class, id); Set foos = baz.getFooSet(); assertTrue( foos.size()==0 ); Foo foo = new Foo(); foos.add(foo); s.save(foo); s.flush(); s.delete(foo); s.delete(baz); s.flush(); s.connection().commit(); s.close(); } public void testOneToOneGenerator() throws Exception { Session s = openSession(); X x = new X(); Y y = new Y(); x.setY(y); y.setTheX(x); x.getXxs().add( new X.XX(x) ); x.getXxs().add( new X.XX(x) ); Serializable id = s.save(y); assertEquals( id, s.save(x) ); s.flush(); assertTrue( s.contains(y) && s.contains(x) ); s.connection().commit(); s.close(); assertEquals( new Long(x.getId()), y.getId() ); s = openSession(); x = new X(); y = new Y(); x.setY(y); y.setTheX(x); x.getXxs().add( new X.XX(x) ); s.save(y); s.flush(); assertTrue( s.contains(y) && s.contains(x) ); s.connection().commit(); s.close(); assertEquals( new Long(x.getId()), y.getId() ); s = openSession(); x = new X(); y = new Y(); x.setY(y); y.setTheX(x); x.getXxs().add( new X.XX(x) ); x.getXxs().add( new X.XX(x) ); id = s.save(x); assertEquals( id, y.getId() ); assertEquals( id, new Long( x.getId() ) ); s.flush(); assertTrue( s.contains(y) && s.contains(x) ); s.delete("from X x"); s.flush(); s.connection().commit(); s.close(); } public void testLimit() throws Exception { Session s = openSession(); for ( int i=0; i<10; i++ ) s.save( new Foo() ); Iterator iter = s.createQuery("from Foo foo") .setMaxResults(4) .setFirstResult(2) .iterate(); int count=0; while ( iter.hasNext() ) { iter.next(); count++; } assertTrue(count==4); iter = s.createQuery("select distinct foo from Foo foo") .setMaxResults(2) .setFirstResult(2) .list() .iterator(); count=0; while ( iter.hasNext() ) { iter.next(); count++; } assertTrue(count==2); iter = s.createQuery("select distinct foo from Foo foo") .setMaxResults(3) .list() .iterator(); count=0; while ( iter.hasNext() ) { iter.next(); count++; } assertTrue(count==3); assertTrue( s.delete("from Foo foo")==10 ); s.flush(); s.connection().commit(); s.close(); } public void testCustom() throws Exception { GlarchProxy g = new Glarch(); Multiplicity m = new Multiplicity(); m.count = 12; m.glarch = (Glarch) g; g.setMultiple(m); Session s = openSession(); Serializable gid = s.save(g); s.flush(); s.connection().commit(); s.close(); s = openSession(); g = (Glarch) s.find("from Glarch g where g.multiple.glarch=g and g.multiple.count=12").get(0); assertTrue( g.getMultiple()!=null ); assertEquals( g.getMultiple().count, 12 ); assertSame(g.getMultiple().glarch, g); s.flush(); s.connection().commit(); s.close(); s = openSession(); g = (GlarchProxy) s.load(Glarch.class, gid); assertTrue( g.getMultiple()!=null ); assertEquals( g.getMultiple().count, 12 ); assertSame(g.getMultiple().glarch, g); s.delete(g); s.flush(); s.connection().commit(); s.close(); } public void testSaveAddDelete() throws Exception { Session s = openSession(); Baz baz = new Baz(); Set bars = new HashSet(); baz.setCascadingBars(bars); s.save(baz); s.flush(); baz.getCascadingBars().add( new Bar() ); s.delete(baz); s.flush(); s.connection().commit(); s.close(); } 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(); 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 ( !( getDialect() instanceof Oracle9Dialect) && !( getDialect() instanceof MySQLDialect) && !( getDialect() instanceof DB2Dialect) && !( getDialect() instanceof HSQLDialect) && !( getDialect() instanceof SQLServerDialect) && !( getDialect() instanceof SybaseDialect) ) { // oracle barfs on "x in ()" 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"); if ( getDialect() instanceof HSQLDialect ) { q.setString("name", "Bar %"); } else { 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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -