1 package org.hibernate.test.collection; 3 4 import java.sql.SQLException ; 5 6 import junit.framework.Test; 7 import junit.framework.TestSuite; 8 9 import org.hibernate.Hibernate; 10 import org.hibernate.HibernateException; 11 import org.hibernate.Session; 12 import org.hibernate.Transaction; 13 import org.hibernate.test.TestCase; 14 15 18 public class CollectionTest extends TestCase { 19 20 public CollectionTest(String str) { 21 super(str); 22 } 23 24 public void testMerge() throws HibernateException, SQLException { 25 Session s = openSession(); 26 Transaction t = s.beginTransaction(); 27 User u = new User("gavin"); 28 u.getPermissions().add( new Permission("obnoxiousness") ); 29 u.getPermissions().add( new Permission("pigheadedness") ); 30 s.persist(u); 31 t.commit(); 32 s.close(); 33 34 s = openSession(); 35 t = s.beginTransaction(); 36 User u2 = (User) s.createCriteria(User.class).uniqueResult(); 37 u2.setPermissions(null); s.merge(u); 39 t.commit(); 40 s.close(); 41 42 u.getPermissions().add( new Permission("silliness") ); 43 44 s = openSession(); 45 t = s.beginTransaction(); 46 s.merge(u); 47 t.commit(); 48 s.close(); 49 50 s = openSession(); 51 t = s.beginTransaction(); 52 u2 = (User) s.createCriteria(User.class).uniqueResult(); 53 assertEquals( u2.getPermissions().size(), 3 ); 54 assertEquals( ( (Permission) u2.getPermissions().get(0) ).getType(), "obnoxiousness" ); 55 assertEquals( ( (Permission) u2.getPermissions().get(2) ).getType(), "silliness" ); 56 t.commit(); 57 s.close(); 58 59 s = openSession(); 60 t = s.beginTransaction(); 61 s.delete(u2); 62 s.flush(); 63 t.commit(); 64 s.close(); 65 66 } 67 68 public void testFetch() { 69 Session s = openSession(); 70 Transaction t = s.beginTransaction(); 71 User u = new User("gavin"); 72 u.getPermissions().add( new Permission("obnoxiousness") ); 73 u.getPermissions().add( new Permission("pigheadedness") ); 74 u.getEmailAddresses().add( new Email("gavin@hibernate.org") ); 75 u.getEmailAddresses().add( new Email("gavin.king@jboss.com") ); 76 s.persist(u); 77 t.commit(); 78 s.close(); 79 80 s = openSession(); 81 t = s.beginTransaction(); 82 User u2 = (User) s.createCriteria(User.class).uniqueResult(); 83 assertTrue( Hibernate.isInitialized( u2.getEmailAddresses() ) ); 84 assertFalse( Hibernate.isInitialized( u2.getPermissions() ) ); 85 assertEquals( u2.getEmailAddresses().size(), 2 ); 86 s.delete(u2); 87 t.commit(); 88 s.close(); 89 } 90 91 public void testUpdateOrder() { 92 Session s = openSession(); 93 Transaction t = s.beginTransaction(); 94 User u = new User("gavin"); 95 u.getSessionData().put("foo", "foo value"); 96 u.getSessionData().put("bar", "bar value"); 97 u.getEmailAddresses().add( new Email("gavin.king@jboss.com") ); 98 u.getEmailAddresses().add( new Email("gavin@hibernate.org") ); 99 u.getEmailAddresses().add( new Email("gavin@illflow.com") ); 100 u.getEmailAddresses().add( new Email("gavin@nospam.com") ); 101 s.persist(u); 102 t.commit(); 103 s.close(); 104 105 u.getSessionData().clear(); 106 u.getSessionData().put("baz", "baz value"); 107 u.getSessionData().put("bar", "bar value"); 108 u.getEmailAddresses().remove(0); 109 u.getEmailAddresses().remove(2); 110 111 s = openSession(); 112 t = s.beginTransaction(); 113 s.update(u); 114 t.commit(); 115 s.close(); 116 117 u.getSessionData().clear(); 118 u.getEmailAddresses().add(0, new Email("gavin@nospam.com") ); 119 u.getEmailAddresses().add( new Email("gavin.king@jboss.com") ); 120 121 s = openSession(); 122 t = s.beginTransaction(); 123 s.update(u); 124 t.commit(); 125 s.close(); 126 127 s = openSession(); 128 t = s.beginTransaction(); 129 s.delete(u); 130 t.commit(); 131 s.close(); 132 133 } 134 135 public void testValueMap() { 136 Session s = openSession(); 137 Transaction t = s.beginTransaction(); 138 User u = new User("gavin"); 139 u.getSessionData().put("foo", "foo value"); 140 u.getSessionData().put("bar", null); 141 u.getEmailAddresses().add(null); 142 u.getEmailAddresses().add( new Email("gavin.king@jboss.com") ); 143 u.getEmailAddresses().add(null); 144 u.getEmailAddresses().add(null); 145 s.persist(u); 146 t.commit(); 147 s.close(); 148 149 s = openSession(); 150 t = s.beginTransaction(); 151 User u2 = (User) s.createCriteria(User.class).uniqueResult(); 152 assertFalse( Hibernate.isInitialized( u2.getSessionData() ) ); 153 assertEquals( u2.getSessionData().size(), 1 ); 154 assertEquals( u2.getEmailAddresses().size(), 2 ); 155 u2.getSessionData().put("foo", "new foo value"); 156 u2.getEmailAddresses().set( 1, new Email("gavin@hibernate.org") ); 157 t.commit(); 160 s.close(); 161 162 s = openSession(); 163 t = s.beginTransaction(); 164 u2 = (User) s.createCriteria(User.class).uniqueResult(); 165 assertFalse( Hibernate.isInitialized( u2.getSessionData() ) ); 166 assertEquals( u2.getSessionData().size(), 1 ); 167 assertEquals( u2.getEmailAddresses().size(), 2 ); 168 assertEquals( u2.getSessionData().get("foo"), "new foo value" ); 169 assertEquals( ( (Email) u2.getEmailAddresses().get(1) ).getAddress(), "gavin@hibernate.org" ); 170 s.delete(u2); 171 t.commit(); 172 s.close(); 173 } 174 175 176 177 protected String [] getMappings() { 178 return new String [] { "collection/UserPermissions.hbm.xml" }; 179 } 180 181 public static Test suite() { 182 return new TestSuite(CollectionTest.class); 183 } 184 185 } 186 187 | Popular Tags |