Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/hibernate/test/manytomany/ManyToManyTest.java


1   //$Id: ManyToManyTest.java 7085 2005-06-08 17:59:47Z oneovthafew $
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 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[] getMappings() {
116     return new String[] { "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