KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > hibernate > test > manytomany > ManyToManyTest


1 //$Id: ManyToManyTest.java,v 1.1 2005/06/08 17:59:47 oneovthafew Exp $
2
package org.hibernate.test.manytomany;
3
4 import junit.framework.Test;
5 import junit.framework.TestSuite;
6
7 import org.hibernate.FetchMode;
8 import org.hibernate.Hibernate;
9 import org.hibernate.Session;
10 import org.hibernate.Transaction;
11 import org.hibernate.cfg.Configuration;
12 import org.hibernate.cfg.Environment;
13 import org.hibernate.test.TestCase;
14
15 /**
16  * @author Gavin King
17  */

18 public class ManyToManyTest extends TestCase {
19     
20     public ManyToManyTest(String JavaDoc str) {
21         super(str);
22     }
23     
24     public void testManyToManyWithFormula() {
25         Session s = openSession();
26         Transaction t = s.beginTransaction();
27         User gavin = new User("gavin", "jboss");
28         Group seam = new Group("seam", "jboss");
29         Group hb = new Group("hibernate", "jboss");
30         gavin.getGroups().add(seam);
31         gavin.getGroups().add(hb);
32         seam.getUsers().add(gavin);
33         hb.getUsers().add(gavin);
34         s.persist(gavin);
35         s.persist(seam);
36         s.persist(hb);
37         t.commit();
38         s.close();
39         
40         s = openSession();
41         t = s.beginTransaction();
42         gavin = (User) s.get(User.class, gavin);
43         assertFalse( Hibernate.isInitialized( gavin.getGroups() ) );
44         assertEquals( 2, gavin.getGroups().size() );
45         hb = (Group) s.get(Group.class, hb);
46         assertFalse( Hibernate.isInitialized( hb.getUsers() ) );
47         assertEquals( 1, hb.getUsers().size() );
48         t.commit();
49         s.close();
50
51         s = openSession();
52         t = s.beginTransaction();
53         gavin = (User) s.createCriteria(User.class)
54             .setFetchMode("groups", FetchMode.JOIN)
55             .uniqueResult();
56         assertTrue( Hibernate.isInitialized( gavin.getGroups() ) );
57         assertEquals( 2, gavin.getGroups().size() );
58         Group group = (Group) gavin.getGroups().iterator().next();
59         assertFalse( Hibernate.isInitialized( group.getUsers() ) );
60         assertEquals( 1, group.getUsers().size() );
61         t.commit();
62         s.close();
63         
64         s = openSession();
65         t = s.beginTransaction();
66         gavin = (User) s.createCriteria(User.class)
67             .setFetchMode("groups", FetchMode.JOIN)
68             .setFetchMode("groups.users", FetchMode.JOIN)
69             .uniqueResult();
70         assertTrue( Hibernate.isInitialized( gavin.getGroups() ) );
71         assertEquals( 2, gavin.getGroups().size() );
72         group = (Group) gavin.getGroups().iterator().next();
73         assertTrue( Hibernate.isInitialized( group.getUsers() ) );
74         assertEquals( 1, group.getUsers().size() );
75         t.commit();
76         s.close();
77         
78         s = openSession();
79         t = s.beginTransaction();
80         gavin = (User) s.createQuery("from User u join fetch u.groups g join fetch g.users").uniqueResult();
81         assertTrue( Hibernate.isInitialized( gavin.getGroups() ) );
82         assertEquals( 2, gavin.getGroups().size() );
83         group = (Group) gavin.getGroups().iterator().next();
84         assertTrue( Hibernate.isInitialized( group.getUsers() ) );
85         assertEquals( 1, group.getUsers().size() );
86         t.commit();
87         s.close();
88
89         s = openSession();
90         t = s.beginTransaction();
91         gavin = (User) s.get(User.class, gavin);
92         hb = (Group) s.get(Group.class, hb);
93         gavin.getGroups().remove(hb);
94         t.commit();
95         s.close();
96
97         s = openSession();
98         t = s.beginTransaction();
99         gavin = (User) s.get(User.class, gavin);
100         assertEquals( gavin.getGroups().size(), 1 );
101         hb = (Group) s.get(Group.class, hb);
102         assertEquals( hb.getUsers().size(), 0 );
103         t.commit();
104         s.close();
105
106         s = openSession();
107         t = s.beginTransaction();
108         s.delete(gavin);
109         s.flush();
110         s.createQuery("delete from Group").executeUpdate();
111         t.commit();
112         s.close();
113     }
114     
115     protected String JavaDoc[] getMappings() {
116         return new String JavaDoc[] { "manytomany/UserGroup.hbm.xml" };
117     }
118
119     public static Test suite() {
120         return new TestSuite(ManyToManyTest.class);
121     }
122
123     protected void configure(Configuration cfg) {
124         cfg.setProperty(Environment.USE_SECOND_LEVEL_CACHE, "false");
125     }
126
127 }
128
129
Popular Tags