1 | public void testTransientEntityDeletionCascadingToDetachedAssociation() {
↵ | | 1 | public void testCascadeSave() throws Exception {↵
|
2 | Session s = openSession();
↵ | | 2 | Session s = openSession();↵
|
3 | Transaction t = s.beginTransaction();
↵ | | 3 | Transaction t = s.beginTransaction();↵
|
4 | Address address = new Address();
↵ | | 4 | Baz baz = new Baz();↵
|
5 | address.setInfo( "123 Main St." );↵ | | 5 | ↵
|
6 | s.save( address );↵ | | |
|
7 | t.commit();
↵ | | 6 | List list = new ArrayList();↵
|
8 | s.close();↵ | | 7 | ↵
|
|
9 | s = openSession();↵ | | |
|
10 | t = s.beginTransaction();↵ | | |
|
11 | Person p = new Person();↵ | | |
|
12 | p.getAddresses().add( address ↵ | | 8 | list.add( new Fee() );↵
|
| | | 9 | list.add( new Fee() );↵
|
13 | );
↵ | | 10 | baz.setFees(list);↵
|
14 | s.delete( p );
↵ | | 11 | s.save(baz);↵
|
15 | t.commit();
↵ | | 12 | t.commit();↵
|
16 | s.close();↵ | | 13 | s.close();↵
|
17 |
↵ | | |
|
|
18 | s = openSession();
↵ | | 14 | s = openSession();↵
|
19 | t = s.beginTransaction();
↵ | | 15 | t = s.beginTransaction();↵
|
20 | Long count = ( Long ) s.createQuery( "select count(*) from Address" ).list().get( 0 );
↵ | | 16 | baz = (Baz) s.load( Baz.class, baz.getCode() );↵
|
21 | assertEquals( "delete not cascaded properly across transient entity", 0, count.longValue↵ | | 17 | assertTrue( baz.getFees().size()==2 );↵
|
| | | 18 | s.delete(baz);↵
|
22 | () );
↵ | | 19 | assertTrue( !s.iterate("from Fee fee").hasNext() );↵
|
23 | t.commit();
↵ | | 20 | t.commit();↵
|
24 | s.close();↵ | | 21 | s.close();
|
25 | | | | |