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

📄 mergetest.java

📁 hibernate 开源框架的代码 jar包希望大家能喜欢
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		s.merge(root);		tx.commit();		s.close();		assertInsertCount(3);		assertUpdateCount(0);		clearCounts();		grandchild.setDescription("the grand child");		Node grandchild2 = new Node("grandchild2");		child.addChild( grandchild2 );		s = openSession();		tx = s.beginTransaction();		s.merge(root);		tx.commit();		s.close();		assertInsertCount(1);		assertUpdateCount(1);		clearCounts();		Node child2 = new Node("child2");		Node grandchild3 = new Node("grandchild3");		child2.addChild( grandchild3 );		root.addChild(child2);		s = openSession();		tx = s.beginTransaction();		s.merge(root);		tx.commit();		s.close();		assertInsertCount(2);		assertUpdateCount(0);		clearCounts();		s = openSession();		tx = s.beginTransaction();		s.delete(grandchild);		s.delete(grandchild2);		s.delete(grandchild3);		s.delete(child);		s.delete(child2);		s.delete(root);		tx.commit();		s.close();	}	public void testMergeDeepTreeWithGeneratedId() {		clearCounts();		Session s = openSession();		Transaction tx = s.beginTransaction();		NumberedNode root = new NumberedNode("root");		NumberedNode child = new NumberedNode("child");		NumberedNode grandchild = new NumberedNode("grandchild");		root.addChild(child);		child.addChild(grandchild);		root = (NumberedNode) s.merge(root);		tx.commit();		s.close();		assertInsertCount(3);		assertUpdateCount(0);		clearCounts();		child = (NumberedNode) root.getChildren().iterator().next();		grandchild = (NumberedNode) child.getChildren().iterator().next();		grandchild.setDescription("the grand child");		NumberedNode grandchild2 = new NumberedNode("grandchild2");		child.addChild( grandchild2 );		s = openSession();		tx = s.beginTransaction();		root = (NumberedNode) s.merge(root);		tx.commit();		s.close();		assertInsertCount(1);		assertUpdateCount(1);		clearCounts();		getSessions().evict(NumberedNode.class);		NumberedNode child2 = new NumberedNode("child2");		NumberedNode grandchild3 = new NumberedNode("grandchild3");		child2.addChild( grandchild3 );		root.addChild(child2);		s = openSession();		tx = s.beginTransaction();		root = (NumberedNode) s.merge(root);		tx.commit();		s.close();		assertInsertCount(2);		assertUpdateCount(0);		clearCounts();		s = openSession();		tx = s.beginTransaction();		s.createQuery("delete from NumberedNode where name like 'grand%'").executeUpdate();		s.createQuery("delete from NumberedNode where name like 'child%'").executeUpdate();		s.createQuery("delete from NumberedNode").executeUpdate();		tx.commit();		s.close();	}	public void testMergeTree() {		clearCounts();		Session s = openSession();		Transaction tx = s.beginTransaction();		Node root = new Node("root");		Node child = new Node("child");		root.addChild(child);		s.persist(root);		tx.commit();		s.close();		assertInsertCount(2);		clearCounts();		root.setDescription("The root node");		child.setDescription("The child node");		Node secondChild = new Node("second child");		root.addChild(secondChild);		s = openSession();		tx = s.beginTransaction();		s.merge(root);		tx.commit();		s.close();		assertInsertCount(1);		assertUpdateCount(2);		cleanup();	}	public void testMergeTreeWithGeneratedId() {		clearCounts();		Session s = openSession();		Transaction tx = s.beginTransaction();		NumberedNode root = new NumberedNode("root");		NumberedNode child = new NumberedNode("child");		root.addChild(child);		s.persist(root);		tx.commit();		s.close();		assertInsertCount(2);		clearCounts();		root.setDescription("The root node");		child.setDescription("The child node");		NumberedNode secondChild = new NumberedNode("second child");		root.addChild(secondChild);		s = openSession();		tx = s.beginTransaction();		s.merge(root);		tx.commit();		s.close();		assertInsertCount(1);		assertUpdateCount(2);		cleanup();	}	public void testMergeManaged() {		Session s = openSession();		Transaction tx = s.beginTransaction();		NumberedNode root = new NumberedNode("root");		s.persist(root);		tx.commit();		clearCounts();		tx = s.beginTransaction();		NumberedNode child = new NumberedNode("child");		root.addChild(child);		assertSame( root, s.merge(root) );		Object mergedChild = root.getChildren().iterator().next();		assertNotSame( mergedChild, child );		assertTrue( s.contains(mergedChild) );		assertFalse( s.contains(child) );		assertEquals( root.getChildren().size(), 1 );		assertTrue( root.getChildren().contains(mergedChild) );		//assertNotSame( mergedChild, s.merge(child) ); //yucky :(		tx.commit();		assertInsertCount(1);		assertUpdateCount(0);		assertEquals( root.getChildren().size(), 1 );		assertTrue( root.getChildren().contains(mergedChild) );		tx = s.beginTransaction();		assertEquals(			s.createCriteria(NumberedNode.class)				.setProjection( Projections.rowCount() )				.uniqueResult(),			new Integer(2)		);		s.close();		cleanup();	}	public void testRecursiveMergeTransient() {		Session s = openSession();		Transaction tx = s.beginTransaction();		Employer jboss = new Employer();		Employee gavin = new Employee();		jboss.setEmployees( new ArrayList() );		jboss.getEmployees().add(gavin);		s.merge(jboss);		s.flush();		jboss = (Employer) s.createQuery("from Employer e join fetch e.employees").uniqueResult();		assertTrue( Hibernate.isInitialized( jboss.getEmployees() )  );		assertEquals( 1, jboss.getEmployees().size() );		s.clear();		s.merge( jboss.getEmployees().iterator().next() );		tx.commit();		s.close();		cleanup();	}	public void testDeleteAndMerge() throws Exception {		Session s = openSession();		s.getTransaction().begin();		Employer jboss = new Employer();		s.persist( jboss );		s.getTransaction().commit();		s.clear();		s.getTransaction().begin();		Employer otherJboss;		otherJboss = (Employer) s.get( Employer.class, jboss.getId() );		s.delete( otherJboss );		s.getTransaction().commit();		s.clear();		jboss.setVers( new Integer(1) );		s.getTransaction().begin();		s.merge( jboss );		s.getTransaction().commit();		s.close();		cleanup();	}	public void testMergeManyToManyWithCollectionDeference() throws Exception {		// setup base data...		Session s = openSession();		Transaction tx = s.beginTransaction();		Competition competition = new Competition();		competition.getCompetitors().add( new Competitor( "Name" ) );		competition.getCompetitors().add( new Competitor() );		competition.getCompetitors().add( new Competitor() );		s.persist( competition );		tx.commit();		s.close();		// the competition graph is now detached:		//   1) create a new List reference to represent the competitors		s = openSession();		tx = s.beginTransaction();		List newComp = new ArrayList();		Competitor originalCompetitor = ( Competitor ) competition.getCompetitors().get( 0 );		originalCompetitor.setName( "Name2" );		newComp.add( originalCompetitor );		newComp.add( new Competitor() );		//   2) set that new List reference unto the Competition reference		competition.setCompetitors( newComp );		//   3) attempt the merge		Competition competition2 = ( Competition ) s.merge( competition );		tx.commit();		s.close();		assertFalse( competition == competition2 );		assertFalse( competition.getCompetitors() == competition2.getCompetitors() );		assertEquals( 2, competition2.getCompetitors().size() );		s = openSession();		tx = s.beginTransaction();		competition = ( Competition ) s.get( Competition.class, competition.getId() );		assertEquals( 2, competition.getCompetitors().size() );		s.delete( competition );		tx.commit();		s.close();		cleanup();	}	private void cleanup() {		Session s = openSession();		s.beginTransaction();		s.createQuery( "delete from NumberedNode where parent is not null" ).executeUpdate();		s.createQuery( "delete from NumberedNode" ).executeUpdate();		s.createQuery( "delete from Node where parent is not null" ).executeUpdate();		s.createQuery( "delete from Node" ).executeUpdate();		s.createQuery( "delete from VersionedEntity where parent is not null" ).executeUpdate();		s.createQuery( "delete from VersionedEntity" ).executeUpdate();		s.createQuery( "delete from TimestampedEntity" ).executeUpdate();		s.createQuery( "delete from Competitor" ).executeUpdate();		s.createQuery( "delete from Competition" ).executeUpdate();		Iterator itr = s.createQuery( "from Employer" ).list().iterator();		while ( itr.hasNext() ) {			final Employer employer = ( Employer ) itr.next();			s.delete( employer );		}		s.getTransaction().commit();		s.close();	}}

⌨️ 快捷键说明

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