From: <hib...@li...> - 2006-03-14 13:35:48
|
Author: epbernard Date: 2006-03-14 08:35:27 -0500 (Tue, 14 Mar 2006) New Revision: 9615 Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/ManyToManyTest.java Log: add test Modified: trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/ManyToManyTest.java =================================================================== --- trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/ManyToManyTest.java 2006-03-14 12:33:18 UTC (rev 9614) +++ trunk/HibernateExt/metadata/src/test/org/hibernate/test/annotations/manytomany/ManyToManyTest.java 2006-03-14 13:35:27 UTC (rev 9615) @@ -7,6 +7,7 @@ import java.util.HashSet; import java.util.Set; import java.util.Date; +import java.util.Iterator; import org.hibernate.Session; import org.hibernate.Transaction; @@ -175,7 +176,7 @@ Employer er = new Employer(); Employee ee = new Employee(); s.persist(ee); - Collection erColl = new ArrayList(); + Set erColl = new HashSet(); Collection eeColl = new ArrayList(); erColl.add(ee); eeColl.add(er); @@ -217,6 +218,66 @@ s.close(); } + public void testRemoveInBetween() throws Exception { + Session s; + Transaction tx; + s = openSession(); + tx = s.beginTransaction(); + Employer er = new Employer(); + Employee ee = new Employee(); + Employee ee2 = new Employee(); + s.persist(ee); + s.persist(ee2); + Set erColl = new HashSet(); + Collection eeColl = new ArrayList(); + erColl.add(ee); + erColl.add(ee2); + eeColl.add(er); + er.setEmployees(erColl); + ee.setEmployers(eeColl); + //s.persist(ee); + tx.commit(); + s.close(); + + s = openSession(); + tx = s.beginTransaction(); + er = (Employer) s.load(Employer.class, er.getId() ); + assertNotNull(er); + assertNotNull( er.getEmployees() ); + assertEquals( 2, er.getEmployees().size() ); + Iterator iterator = er.getEmployees().iterator(); + Employee eeFromDb = (Employee) iterator.next(); + if ( eeFromDb.getId().equals( ee.getId() ) ) { + eeFromDb = (Employee) iterator.next(); + } + assertEquals( ee2.getId(), eeFromDb.getId() ); + er.getEmployees().remove( eeFromDb ); + eeFromDb.getEmployers().remove( er ); + tx.commit(); + s.close(); + + s = openSession(); + tx = s.beginTransaction(); + ee = (Employee) s.get(Employee.class, ee.getId() ); + assertNotNull(ee); + assertFalse("ManyToMany mappedBy lazyness", Hibernate.isInitialized( ee.getEmployers() ) ); + tx.commit(); + assertFalse("ManyToMany mappedBy lazyness", Hibernate.isInitialized( ee.getEmployers() ) ); + s.close(); + + s = openSession(); + tx = s.beginTransaction(); + ee = (Employee) s.get(Employee.class, ee.getId() ); + assertNotNull(ee); + er = ee.getEmployers().iterator().next(); + assertTrue("second join non lazy", Hibernate.isInitialized( er ) ); + assertEquals( 1, er.getEmployees().size() ); + s.delete( er ); + s.delete( ee ); + tx.commit(); + s.close(); + } + public void testSelf() throws Exception { Session s; Transaction tx; |