📄 masterdetailtest.java
字号:
s.delete(m); s.delete( s.load(Master.class, m0id) ); s.flush(); s.connection().commit(); s.close(); } public void testNamedQuery() throws Exception { Session s = openSession(); Query q = s.getNamedQuery("all_details"); q.list(); s.connection().commit(); s.close(); } public void testUpdateLazyCollections() throws Exception { Session s = openSession(); Master m = new Master(); Serializable mid = s.save(m); Detail d1 = new Detail(); Detail d2 = new Detail(); d2.setX(14); d1.setMaster(m); d2.setMaster(m); s.save(d1); s.save(d2); m.addDetail(d1); m.addDetail(d2); s.flush(); s.connection().commit(); s.close(); s = openSession(); m = (Master) s.load(Master.class, mid); s.connection().commit(); s.close(); m.setName("New Name"); s = openSession(); s.update(m, mid); Iterator iter = m.getDetails().iterator(); int i=0; while ( iter.hasNext() ) { assertTrue( iter.next()!=null ); i++; } assertTrue(i==2); iter = m.getDetails().iterator(); while ( iter.hasNext() ) s.delete( iter.next() ); s.delete(m); s.flush(); s.connection().commit(); s.close(); } public void testMultiLevelCascade() throws Exception { Session s = openSession(); Transaction txn = s.beginTransaction(); Detail detail = new Detail(); SubDetail subdetail = new SubDetail(); Master m = new Master(); Master m0 = new Master(); Serializable m0id = s.save(m0); m0.addDetail(detail); detail.setMaster(m0); m.getMoreDetails().add(detail); detail.setSubDetails( new HashSet() ); detail.getSubDetails().add(subdetail); Serializable mid = s.save(m); txn.commit(); s.close(); s = openSession(); txn = s.beginTransaction(); m = (Master) s.load( Master.class, mid ); assertTrue( ( (Detail) m.getMoreDetails().iterator().next() ).getSubDetails().size()!=0 ); s.delete(m); assertTrue( s.find("from SubDetail").size()==0 ); assertTrue( s.find("from Detail d").size()==0 ); s.delete( s.load(Master.class, m0id) ); txn.commit(); s.close(); } public void testMixNativeAssigned() throws Exception { Session s = openSession(); Category c = new Category(); c.setName("NAME"); Assignable assn = new Assignable(); assn.setId("i.d."); List l = new ArrayList(); l.add(c); assn.setCategories(l); c.setAssignable(assn); s.save(assn); s.flush(); s.connection().commit(); s.close(); s = openSession(); s.delete(assn); s.flush(); s.connection().commit(); s.close(); } public void testCollectionReplaceOnUpdate() throws Exception { Session s = openSession(); Transaction t = s.beginTransaction(); Category c = new Category(); List list = new ArrayList(); c.setSubcategories(list); list.add( new Category() ); s.save(c); t.commit(); s.close(); c.setSubcategories(list); s = openSession(); t = s.beginTransaction(); s.update(c); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); c = (Category) s.load( Category.class, new Long( c.getId() ), LockMode.UPGRADE ); List list2 = c.getSubcategories(); t.commit(); s.close(); assertTrue( !Hibernate.isInitialized( c.getSubcategories() ) ); c.setSubcategories(list2); s = openSession(); t = s.beginTransaction(); s.update(c); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); c = (Category) s.load( Category.class, new Long( c.getId() ), LockMode.UPGRADE ); assertTrue( c.getSubcategories().size()==1 ); s.delete(c); t.commit(); s.close(); } public void testCollectionReplace2() throws Exception { Session s = openSession(); Transaction t = s.beginTransaction(); Category c = new Category(); List list = new ArrayList(); c.setSubcategories(list); list.add( new Category() ); Category c2 = new Category(); s.save(c2); s.save(c); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); c = (Category) s.load( Category.class, new Long( c.getId() ), LockMode.UPGRADE ); List list2 = c.getSubcategories(); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); c2 = (Category) s.load( Category.class, new Long( c2.getId() ), LockMode.UPGRADE ); c2.setSubcategories(list2); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); c2 = (Category) s.load( Category.class, new Long( c2.getId() ), LockMode.UPGRADE ); assertTrue( c2.getSubcategories().size()==1 ); s.delete(c2); s.delete( s.load( Category.class, new Long( c.getId() ) ) ); t.commit(); s.close(); } public void testCollectionReplace() throws Exception { Session s = openSession(); Transaction t = s.beginTransaction(); Category c = new Category(); List list = new ArrayList(); c.setSubcategories(list); list.add( new Category() ); s.save(c); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); c = (Category) s.load( Category.class, new Long( c.getId() ), LockMode.UPGRADE ); c.setSubcategories(list); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); c = (Category) s.load( Category.class, new Long( c.getId() ), LockMode.UPGRADE ); List list2 = c.getSubcategories(); t.commit(); s.close(); assertTrue( !Hibernate.isInitialized( c.getSubcategories() ) ); s = openSession(); t = s.beginTransaction(); c = (Category) s.load( Category.class, new Long( c.getId() ), LockMode.UPGRADE ); c.setSubcategories(list2); t.commit(); s.close(); s = openSession(); t = s.beginTransaction(); c = (Category) s.load( Category.class, new Long( c.getId() ), LockMode.UPGRADE ); assertTrue( c.getSubcategories().size()==1 ); s.delete(c); t.commit(); s.close(); } public void testCategories() throws Exception { Session s = openSession(); Category c = new Category(); c.setName(Category.ROOT_CATEGORY); Category c1 = new Category(); Category c2 = new Category(); Category c3 = new Category(); c.getSubcategories().add(c1); c.getSubcategories().add(c2); c2.getSubcategories().add(null); c2.getSubcategories().add(c3); s.save(c); s.flush(); s.connection().commit(); s.close(); s = openSession(); Transaction tx = s.beginTransaction(); s.lock(c, LockMode.UPGRADE); Category loaded = (Category) s.load( Category.class, new Long( c3.getId() ) ); assertTrue( s.contains(c3) ); assertTrue(loaded==c3); assertTrue( s.getCurrentLockMode(c3)==LockMode.NONE ); assertTrue( s.getCurrentLockMode(c)==LockMode.UPGRADE ); s.flush(); tx.commit(); s.close(); s = openSession(); loaded = (Category) s.load( Category.class, new Long( c.getId() ) ); assertFalse( Hibernate.isInitialized( loaded.getSubcategories() ) ); s.connection().commit(); s.close(); s = openSession(); s.lock(loaded, LockMode.NONE); assertTrue( loaded.getSubcategories().size()==2 ); s.connection().commit(); s.close(); s = openSession(); c = (Category) s.load( Category.class, new Long( c.getId() ) ); System.out.println( c.getSubcategories() ); assertTrue( c.getSubcategories().get(0)!=null && c.getSubcategories().get(1)!=null ); List list = ( (Category) c.getSubcategories().get(1) ).getSubcategories(); assertTrue( list.get(1)!=null && list.get(0)==null ); assertTrue( s.iterate("from Category c where c.name = org.hibernate.test.legacy.Category.ROOT_CATEGORY").hasNext() ); s.delete(c); s.flush(); s.connection().commit(); s.close(); } public void testCollectionRefresh() throws Exception { Session s = openSession(); Category c = new Category(); List list = new ArrayList(); c.setSubcategories(list); list.add( new Category() ); c.setName("root"); Serializable id = s.save(c); s.flush(); s.connection().commit(); s.close(); s = openSession(); c = (Category) s.load(Category.class, id); s.refresh(c); s.flush(); assertTrue( c.getSubcategories().size()==1 ); s.flush(); s.connection().commit(); s.close(); s = openSession(); c = (Category) s.load(Category.class, id); assertTrue( c.getSubcategories().size()==1 ); s.delete(c); s.flush(); s.connection().commit(); s.close(); } public void testCachedCollectionRefresh() throws Exception { if ( isSerializableIsolationEnforced() ) { reportSkip( "SERIALIZABLE isolation", "cached collection refreshing" ); return; } Session s = openSession(); Category c = new Category(); List list = new ArrayList(); c.setSubcategories(list); list.add( new Category() ); c.setName("root"); Serializable id = s.save(c); s.flush(); s.connection().commit(); s.close(); s = openSession(); c = (Category) s.load(Category.class, id); c.getSubcategories().size(); //force load and cache s.connection().commit(); s.close(); s = openSession(); if ( (getDialect() instanceof MySQLDialect) ) { s.connection().setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); } c = (Category) s.load(Category.class, id); c.getSubcategories().size(); //force load Session ss = openSession(); Category c2 = (Category) ss.load(Category.class, id); ss.delete( c2.getSubcategories().get(0) ); c2.getSubcategories().clear(); ss.flush(); ss.connection().commit(); ss.close(); s.refresh(c); assertTrue( c.getSubcategories().size()==0 ); ss = openSession(); c2 = (Category) ss.load(Category.class, id); c2.getSubcategories().add( new Category() ); c2.getSubcategories().add( new Category() ); ss.flush(); ss.connection().commit(); ss.close(); s.refresh(c); assertEquals( 2, c.getSubcategories().size() ); s.flush(); s.connection().commit(); s.close(); s = openSession(); c = (Category) s.load(Category.class, id); assertEquals( 2, c.getSubcategories().size() ); s.delete(c); s.flush(); s.connection().commit(); s.close(); } public void testCustomPersister() throws Exception { Session s = openSession(); Custom c = new Custom(); c.setName( "foo" ); c.id="100"; String id = (String) s.save(c); assertTrue( c==s.load(Custom.class, id) ); s.flush(); s.close(); s = openSession(); c = (Custom) s.load(Custom.class, id); assertTrue( c.getName().equals("foo") ); c.setName( "bar" ); s.flush(); s.close(); s = openSession(); c = (Custom) s.load(Custom.class, id); assertTrue( c.getName().equals("bar") ); s.delete(c); s.flush(); s.close(); s = openSession(); boolean none = false; try { s.load(Custom.class, id); } catch (ObjectNotFoundException onfe) { none=true; } assertTrue(none); s.close(); } public void testInterface() throws Exception { Session s = openSession(); Serializable id = s.save( new BasicNameable() ); s.flush(); s.connection().commit(); s.close(); s = openSession(); Nameable n = (Nameable) s.load(Nameable.class, id); s.delete(n); s.flush(); s.connection().commit(); s.close(); } public void testNoUpdateManyToOne() throws Exception { Session s = openSession(); W w1 = new W(); W w2 = new W(); Z z = new Z(); z.setW(w1); s.save(z); s.flush(); z.setW(w2); s.flush(); s.connection().commit(); s.close(); s = openSession(); s.update(z); s.flush(); s.delete(z); s.delete("from W"); s.flush(); s.connection().commit(); s.close(); } public void testQueuedBagAdds() throws Exception { Session s = openSession(); Assignable a = new Assignable(); a.setId("foo"); a.setCategories( new ArrayList() ); Category c = new Category(); c.setAssignable(a); a.getCategories().add(c); s.save(a); s.flush(); s.connection().commit(); s.close(); getSessions().evictCollection("org.hibernate.test.legacy.Assignable.categories"); s = openSession(); a = (Assignable) s.get(Assignable.class, "foo"); c = new Category(); c.setAssignable(a); a.getCategories().add(c); assertFalse( Hibernate.isInitialized( a.getCategories() ) ); assertTrue( a.getCategories().size()==2 ); s.flush(); s.connection().commit(); s.close(); getSessions().evictCollection("org.hibernate.test.legacy.Assignable.categories"); s = openSession(); a = (Assignable) s.get(Assignable.class, "foo"); c = new Category(); c.setAssignable(a); a.getCategories().add(c); assertFalse( Hibernate.isInitialized( a.getCategories() ) ); s.flush(); assertFalse( Hibernate.isInitialized( a.getCategories() ) ); assertTrue( a.getCategories().size()==3 ); s.connection().commit(); s.close(); getSessions().evictCollection("org.hibernate.test.legacy.Assignable.categories"); s = openSession(); a = (Assignable) s.get(Assignable.class, "foo"); assertTrue( a.getCategories().size()==3 ); s.delete(a); s.flush(); s.connection().commit(); s.close(); } public void testPolymorphicCriteria() throws Exception { Session s = openSession(); Transaction txn = s.beginTransaction(); Category f = new Category(); Single b = new Single(); b.setId("asdfa"); b.setString("asdfasdf"); s.save(f); s.save(b); List list = s.createCriteria(Object.class).list(); assertTrue( list.size()==2 ); assertTrue( list.contains(f) && list.contains(b) ); s.delete(f); s.delete(b); txn.commit(); s.close(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -