Skip to content

Commit d59ac45

Browse files
gbadnervladmihalcea
authored andcommitted
HHH-11196 - Hibernate 5 Bytecode Enhancement Association Management works just in one direction
- add replicating test case
1 parent d5ac648 commit d59ac45

File tree

2 files changed

+74
-2
lines changed

2 files changed

+74
-2
lines changed

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/EnhancerTest.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88

99
import org.hibernate.bytecode.enhance.spi.UnloadedClass;
1010

11-
import org.hibernate.test.bytecode.enhancement.detached.DetachedGetIdentifierTestTask;
12-
import org.hibernate.test.bytecode.enhancement.cascade.CascadeWithFkConstraintTestTask;
1311
import org.hibernate.testing.DialectChecks;
1412
import org.hibernate.testing.FailureExpected;
1513
import org.hibernate.testing.RequiresDialectFeature;
@@ -21,10 +19,13 @@
2119
import org.hibernate.test.bytecode.enhancement.association.InheritedAttributeAssociationTestTask;
2220
import org.hibernate.test.bytecode.enhancement.association.ManyToManyAssociationTestTask;
2321
import org.hibernate.test.bytecode.enhancement.association.OneToManyAssociationTestTask;
22+
import org.hibernate.test.bytecode.enhancement.association.OneToManyBidirectionalAssociationTestTask;
2423
import org.hibernate.test.bytecode.enhancement.association.OneToOneAssociationTestTask;
2524
import org.hibernate.test.bytecode.enhancement.basic.BasicEnhancementTestTask;
2625
import org.hibernate.test.bytecode.enhancement.basic.HHH9529TestTask;
2726
import org.hibernate.test.bytecode.enhancement.cascade.CascadeDeleteTestTask;
27+
import org.hibernate.test.bytecode.enhancement.cascade.CascadeWithFkConstraintTestTask;
28+
import org.hibernate.test.bytecode.enhancement.detached.DetachedGetIdentifierTestTask;
2829
import org.hibernate.test.bytecode.enhancement.dirty.DirtyTrackingCollectionTestTask;
2930
import org.hibernate.test.bytecode.enhancement.dirty.DirtyTrackingTestTask;
3031
import org.hibernate.test.bytecode.enhancement.eviction.EvictionTestTask;
@@ -111,6 +112,12 @@ public void testAssociation() {
111112
EnhancerTestUtils.runEnhancerTestTask( InheritedAttributeAssociationTestTask.class );
112113
}
113114

115+
@Test
116+
@FailureExpected( jiraKey = "HHH-11196" )
117+
public void testHHH11196() {
118+
EnhancerTestUtils.runEnhancerTestTask( OneToManyBidirectionalAssociationTestTask.class );
119+
}
120+
114121
@Test
115122
public void testLazy() {
116123
EnhancerTestUtils.runEnhancerTestTask( LazyLoadingTestTask.class );
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.test.bytecode.enhancement.association;
8+
9+
import java.util.List;
10+
11+
import org.hibernate.test.bytecode.enhancement.AbstractEnhancerTestTask;
12+
import org.junit.Assert;
13+
14+
/**
15+
* @author Luis Barreiro
16+
*/
17+
public class OneToManyBidirectionalAssociationTestTask extends AbstractEnhancerTestTask {
18+
19+
public Class<?>[] getAnnotatedClasses() {
20+
return new Class<?>[] {Customer.class, CustomerInventory.class, Group.class, User.class};
21+
}
22+
23+
public void prepare() {
24+
}
25+
26+
public void execute() {
27+
Customer customer = new Customer();
28+
Assert.assertTrue( customer.getInventories().isEmpty() );
29+
30+
CustomerInventory customerInventory = new CustomerInventory();
31+
customerInventory.setCustomer( customer );
32+
33+
Assert.assertTrue( customer.getInventories().size() == 1 );
34+
Assert.assertTrue( customer.getInventories().contains( customerInventory ) );
35+
36+
Customer anotherCustomer = new Customer();
37+
Assert.assertTrue( anotherCustomer.getInventories().isEmpty() );
38+
customerInventory.setCustomer( anotherCustomer );
39+
40+
Assert.assertTrue( customer.getInventories().isEmpty() );
41+
Assert.assertTrue( anotherCustomer.getInventories().size() == 1 );
42+
Assert.assertTrue( anotherCustomer.getInventories().get( 0 ) == customerInventory );
43+
44+
customer.getInventories().add( customerInventory );
45+
46+
Assert.assertTrue( customerInventory.getCustomer() == customer );
47+
Assert.assertTrue( anotherCustomer.getInventories().isEmpty() );
48+
Assert.assertTrue( customer.getInventories().size() == 1 );
49+
50+
customer.addInventory( new CustomerInventory() );
51+
Assert.assertTrue( customer.getInventories().size() == 2 );
52+
53+
// Test remove
54+
55+
List<CustomerInventory> inventories = customer.getInventories();
56+
inventories.remove( customerInventory );
57+
customer.setInventories( inventories );
58+
59+
// This happens (and is expected) because there was no snapshot taken beforeQuery remove
60+
Assert.assertNotNull( customerInventory.getCustomer() );
61+
}
62+
63+
protected void cleanup() {
64+
}
65+
}

0 commit comments

Comments
 (0)