📄 masterdetailtest.java
字号:
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(); s.lock(c, LockMode.UPGRADE); Category loaded = (Category) s.load( Category.class, new Long( c3.getId() ) ); assertTrue(loaded==c3); assertTrue( s.getCurrentLockMode(c3)==LockMode.UPGRADE ); assertTrue( s.getCurrentLockMode(c)==LockMode.UPGRADE ); s.flush(); s.connection().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 c in class Category where c.name = org.hibernate.test.Category.ROOT_CATEGORY").hasNext() ); 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 { 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 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); assertTrue( c.getSubcategories().size()==2 ); s.flush(); s.connection().commit(); s.close(); s = openSession(); c = (Category) s.load(Category.class, id); assertTrue( c.getSubcategories().size()==2 ); s.delete(c); s.flush(); s.connection().commit(); s.close(); } public void testCustomPersister() throws Exception { Session s = openSession(); Custom c = new Custom(); c.name = "foo"; c.id=100; Long id = (Long) 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.name.equals("foo") ); c.name = "bar"; s.flush(); s.close(); s = openSession(); c = (Custom) s.load(Custom.class, id); assertTrue( c.name.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.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.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.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.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 String[] getMappings() { return new String[] { "MasterDetail.hbm.xml", "Custom.hbm.xml", "Category.hbm.xml", "Nameable.hbm.xml", "SingleSeveral.hbm.xml", "WZ.hbm.xml", "UpDown.hbm.xml", "Eye.hbm.xml" }; } public static Test suite() { return new TestSuite(MasterDetailTest.class); } public static void main(String[] args) throws Exception { TestRunner.run( suite() ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -