~ubuntu-branches/ubuntu/wily/libhibernate3-java/wily-proposed

« back to all changes in this revision

Viewing changes to test/org/hibernate/test/manytomany/ManyToManyTest.java

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2007-10-14 14:43:34 UTC
  • Revision ID: james.westby@ubuntu.com-20071014144334-eamc8i0q10gs1aro
Tags: upstream-3.2.5
ImportĀ upstreamĀ versionĀ 3.2.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//$Id: ManyToManyTest.java 10976 2006-12-12 23:22:26Z steve.ebersole@jboss.com $
 
2
package org.hibernate.test.manytomany;
 
3
 
 
4
import junit.framework.Test;
 
5
 
 
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;
 
14
 
 
15
/**
 
16
 * @author Gavin King
 
17
 */
 
18
public class ManyToManyTest extends FunctionalTestCase {
 
19
        
 
20
        public ManyToManyTest(String str) {
 
21
                super(str);
 
22
        }
 
23
 
 
24
        public String[] getMappings() {
 
25
                return new String[] { "manytomany/UserGroup.hbm.xml" };
 
26
        }
 
27
 
 
28
        public void configure(Configuration cfg) {
 
29
                cfg.setProperty(Environment.USE_SECOND_LEVEL_CACHE, "false");
 
30
        }
 
31
 
 
32
        public static Test suite() {
 
33
                return new FunctionalTestClassTestSuite( ManyToManyTest.class );
 
34
        }
 
35
        
 
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);
 
46
                s.persist(gavin);
 
47
                s.persist(seam);
 
48
                s.persist(hb);
 
49
                t.commit();
 
50
                s.close();
 
51
                
 
52
                s = openSession();
 
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() );
 
60
                t.commit();
 
61
                s.close();
 
62
 
 
63
                s = openSession();
 
64
                t = s.beginTransaction();
 
65
                gavin = (User) s.createCriteria(User.class)
 
66
                        .setFetchMode("groups", FetchMode.JOIN)
 
67
                        .uniqueResult();
 
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() );
 
73
                t.commit();
 
74
                s.close();
 
75
                
 
76
                s = openSession();
 
77
                t = s.beginTransaction();
 
78
                gavin = (User) s.createCriteria(User.class)
 
79
                        .setFetchMode("groups", FetchMode.JOIN)
 
80
                        .setFetchMode("groups.users", FetchMode.JOIN)
 
81
                        .uniqueResult();
 
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() );
 
87
                t.commit();
 
88
                s.close();
 
89
                
 
90
                s = openSession();
 
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() );
 
98
                t.commit();
 
99
                s.close();
 
100
 
 
101
                s = openSession();
 
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);
 
106
                t.commit();
 
107
                s.close();
 
108
 
 
109
                s = openSession();
 
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 );
 
115
                t.commit();
 
116
                s.close();
 
117
 
 
118
                s = openSession();
 
119
                t = s.beginTransaction();
 
120
                s.delete(gavin);
 
121
                s.flush();
 
122
                s.createQuery("delete from Group").executeUpdate();
 
123
                t.commit();
 
124
                s.close();
 
125
        }
 
126
}
 
127