1
//$Id: ManyToManyTest.java 10976 2006-12-12 23:22:26Z steve.ebersole@jboss.com $
2
package org.hibernate.test.manytomany;
4
import junit.framework.Test;
6
import org.hibernate.FetchMode;
7
import org.hibernate.Hibernate;
8
import org.hibernate.Session;
9
import org.hibernate.Transaction;
10
import org.hibernate.cfg.Configuration;
11
import org.hibernate.cfg.Environment;
12
import org.hibernate.junit.functional.FunctionalTestCase;
13
import org.hibernate.junit.functional.FunctionalTestClassTestSuite;
18
public class ManyToManyTest extends FunctionalTestCase {
20
public ManyToManyTest(String str) {
24
public String[] getMappings() {
25
return new String[] { "manytomany/UserGroup.hbm.xml" };
28
public void configure(Configuration cfg) {
29
cfg.setProperty(Environment.USE_SECOND_LEVEL_CACHE, "false");
32
public static Test suite() {
33
return new FunctionalTestClassTestSuite( ManyToManyTest.class );
36
public void testManyToManyWithFormula() {
37
Session s = openSession();
38
Transaction t = s.beginTransaction();
39
User gavin = new User("gavin", "jboss");
40
Group seam = new Group("seam", "jboss");
41
Group hb = new Group("hibernate", "jboss");
42
gavin.getGroups().add(seam);
43
gavin.getGroups().add(hb);
44
seam.getUsers().add(gavin);
45
hb.getUsers().add(gavin);
53
t = s.beginTransaction();
54
gavin = (User) s.get(User.class, gavin);
55
assertFalse( Hibernate.isInitialized( gavin.getGroups() ) );
56
assertEquals( 2, gavin.getGroups().size() );
57
hb = (Group) s.get(Group.class, hb);
58
assertFalse( Hibernate.isInitialized( hb.getUsers() ) );
59
assertEquals( 1, hb.getUsers().size() );
64
t = s.beginTransaction();
65
gavin = (User) s.createCriteria(User.class)
66
.setFetchMode("groups", FetchMode.JOIN)
68
assertTrue( Hibernate.isInitialized( gavin.getGroups() ) );
69
assertEquals( 2, gavin.getGroups().size() );
70
Group group = (Group) gavin.getGroups().iterator().next();
71
assertFalse( Hibernate.isInitialized( group.getUsers() ) );
72
assertEquals( 1, group.getUsers().size() );
77
t = s.beginTransaction();
78
gavin = (User) s.createCriteria(User.class)
79
.setFetchMode("groups", FetchMode.JOIN)
80
.setFetchMode("groups.users", FetchMode.JOIN)
82
assertTrue( Hibernate.isInitialized( gavin.getGroups() ) );
83
assertEquals( 2, gavin.getGroups().size() );
84
group = (Group) gavin.getGroups().iterator().next();
85
assertTrue( Hibernate.isInitialized( group.getUsers() ) );
86
assertEquals( 1, group.getUsers().size() );
91
t = s.beginTransaction();
92
gavin = (User) s.createQuery("from User u join fetch u.groups g join fetch g.users").uniqueResult();
93
assertTrue( Hibernate.isInitialized( gavin.getGroups() ) );
94
assertEquals( 2, gavin.getGroups().size() );
95
group = (Group) gavin.getGroups().iterator().next();
96
assertTrue( Hibernate.isInitialized( group.getUsers() ) );
97
assertEquals( 1, group.getUsers().size() );
102
t = s.beginTransaction();
103
gavin = (User) s.get(User.class, gavin);
104
hb = (Group) s.get(Group.class, hb);
105
gavin.getGroups().remove(hb);
110
t = s.beginTransaction();
111
gavin = (User) s.get(User.class, gavin);
112
assertEquals( gavin.getGroups().size(), 1 );
113
hb = (Group) s.get(Group.class, hb);
114
assertEquals( hb.getUsers().size(), 0 );
119
t = s.beginTransaction();
122
s.createQuery("delete from Group").executeUpdate();