Skip to content

Commit bcbd691

Browse files
dreab8mbellade
authored andcommitted
HHH-19369 Add test for issue
1 parent fd34d10 commit bcbd691

15 files changed

+469
-22
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.Inheritance;
9+
import jakarta.persistence.InheritanceType;
10+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.parent.Ancestor;
11+
12+
@Entity(name = "AncestorEntity")
13+
@Inheritance(strategy = InheritanceType.JOINED)
14+
public class AncestorEntity extends Ancestor {
15+
16+
private Long id;
17+
18+
private String field;
19+
20+
public Long getId() {
21+
return id;
22+
}
23+
24+
public void setId(Long id) {
25+
this.id = id;
26+
}
27+
28+
public String getField() {
29+
return field;
30+
}
31+
32+
public void setField(String field) {
33+
this.field = field;
34+
}
35+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import jakarta.persistence.Entity;
8+
9+
@Entity(name = "ChildEntity3")
10+
public class ChildEntity3 extends AncestorEntity {
11+
private String childField;
12+
13+
public String getChildField() {
14+
return childField;
15+
}
16+
17+
public void setChieldField(String childField) {
18+
this.childField = childField;
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import jakarta.persistence.Entity;
8+
9+
@Entity(name = "ChildEntity4")
10+
public class ChildEntity4 extends AncestorEntity {
11+
private String childField;
12+
13+
public String getChildField() {
14+
return childField;
15+
}
16+
17+
public void setChieldField(String childField) {
18+
this.childField = childField;
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import jakarta.persistence.Entity;
8+
9+
@Entity(name = "ChildEntity5")
10+
public class ChildEntity5 extends AncestorEntity {
11+
private String childField;
12+
13+
public String getChildField() {
14+
return childField;
15+
}
16+
17+
public void setChieldField(String childField) {
18+
this.childField = childField;
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import jakarta.persistence.Entity;
8+
9+
@Entity(name = "ChildEntity6")
10+
public class ChildEntity6 extends AncestorEntity {
11+
private String childField;
12+
13+
public String getChildField() {
14+
return childField;
15+
}
16+
17+
public void setChieldField(String childField) {
18+
this.childField = childField;
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import jakarta.persistence.Entity;
8+
9+
@Entity(name = "ChildEntity7")
10+
public class ChildEntity7 extends AncestorEntity {
11+
private String childField;
12+
13+
public String getChildField() {
14+
return childField;
15+
}
16+
17+
public void setChildField(String childField) {
18+
this.childField = childField;
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import jakarta.persistence.Entity;
8+
9+
@Entity(name = "ChildEntity8")
10+
public class ChildEntity8 extends AncestorEntity {
11+
private String childField;
12+
13+
public String getChildField() {
14+
return childField;
15+
}
16+
17+
public void setChildField(String childField) {
18+
this.childField = childField;
19+
}
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import jakarta.persistence.Entity;
8+
9+
@Entity(name = "ChildEntity9")
10+
public class ChildEntity9 extends AncestorEntity {
11+
private String childField;
12+
13+
public String getChildField() {
14+
return childField;
15+
}
16+
17+
public void setChildField(String childField) {
18+
this.childField = childField;
19+
}
20+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.child.ChildEntity10;
8+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.parent.Ancestor;
9+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.parent.ChildEntity2;
10+
import org.hibernate.query.Query;
11+
12+
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
13+
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
14+
import org.hibernate.testing.orm.junit.Jira;
15+
import org.junit.After;
16+
import org.junit.Test;
17+
import org.junit.runner.RunWith;
18+
19+
import static org.assertj.core.api.Assertions.assertThat;
20+
21+
@Jira("https://hibernate.atlassian.net/browse/HHH-19372")
22+
@RunWith( BytecodeEnhancerRunner.class )
23+
public class HierarchyBytecodeOptimizerMethodVisibilityTest extends BaseNonConfigCoreFunctionalTestCase {
24+
@Override
25+
protected Class[] getAnnotatedClasses() {
26+
return new Class[]{
27+
Ancestor.class,
28+
AncestorEntity.class,
29+
ChildEntity2.class,
30+
ChildEntity10.class
31+
};
32+
}
33+
34+
@Test
35+
public void testOptimizerSetPropertyValues() {
36+
ChildEntity2 childEntity2 = new ChildEntity2();
37+
childEntity2.setId( 1L );
38+
childEntity2.setField( "field" );
39+
childEntity2.setChieldField( "childField" );
40+
41+
ChildEntity10 childEntity10 = new ChildEntity10();
42+
childEntity10.setId( 3L );
43+
childEntity10.setField( "field10" );
44+
childEntity10.setChieldField( "childField3" );
45+
46+
inTransaction( session -> {
47+
session.persist( childEntity2 );
48+
session.persist( childEntity10 );
49+
} );
50+
51+
inTransaction( session -> {
52+
Query<ChildEntity2> query = session.createQuery( "select c from ChildEntity2 c where c.field = :field",
53+
ChildEntity2.class );
54+
query.setParameter( "field", "field" );
55+
assertThat( query.uniqueResult() ).isNotNull();
56+
} );
57+
58+
inTransaction( session -> {
59+
Query<ChildEntity10> query = session.createQuery( "select c from ChildEntity10 c where c.field = :field",
60+
ChildEntity10.class );
61+
query.setParameter( "field", "field10" );
62+
assertThat( query.uniqueResult() ).isNotNull();
63+
} );
64+
}
65+
66+
@After
67+
public void cleanup() {
68+
sessionFactory().getSchemaManager().truncateMappedObjects();
69+
}
70+
}
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
6+
7+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.parent.Ancestor;
8+
import org.hibernate.query.Query;
9+
10+
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
11+
import org.hibernate.testing.junit4.BaseNonConfigCoreFunctionalTestCase;
12+
import org.hibernate.testing.orm.junit.Jira;
13+
14+
import org.junit.After;
15+
import org.junit.Test;
16+
import org.junit.runner.RunWith;
17+
18+
import static org.assertj.core.api.Assertions.assertThat;
19+
20+
@Jira("https://hibernate.atlassian.net/browse/HHH-19369")
21+
@RunWith( BytecodeEnhancerRunner.class )
22+
public class HierarchyBytecodeOptimizerOrderingTest extends BaseNonConfigCoreFunctionalTestCase {
23+
@Override
24+
protected Class[] getAnnotatedClasses() {
25+
return new Class[]{
26+
Ancestor.class,
27+
ParentEntity.class,
28+
ChildEntity3.class,
29+
ChildEntity4.class,
30+
ChildEntity5.class,
31+
ChildEntity6.class,
32+
ChildEntity7.class,
33+
ChildEntity8.class,
34+
ChildEntity9.class
35+
};
36+
}
37+
38+
@Test
39+
public void testOptimizerSetPropertyValues() {
40+
ChildEntity3 childEntity3 = new ChildEntity3();
41+
childEntity3.setId( 3L );
42+
childEntity3.setName( "child3" );
43+
childEntity3.setField( "field3" );
44+
childEntity3.setChieldField( "childField3" );
45+
46+
ChildEntity4 childEntity4 = new ChildEntity4();
47+
childEntity4.setId( 4L );
48+
childEntity4.setName( "child4" );
49+
childEntity4.setField( "field4" );
50+
childEntity4.setChieldField( "childField4" );
51+
52+
ChildEntity5 childEntity5 = new ChildEntity5();
53+
childEntity5.setId( 5L );
54+
childEntity5.setName( "child5" );
55+
childEntity5.setField( "field5" );
56+
childEntity5.setChieldField( "childField5" );
57+
58+
ChildEntity6 childEntity6 = new ChildEntity6();
59+
childEntity6.setId( 6L );
60+
childEntity6.setName( "child6" );
61+
childEntity6.setField( "field6" );
62+
childEntity6.setChieldField( "childField6" );
63+
64+
ChildEntity7 childEntity7 = new ChildEntity7();
65+
childEntity7.setId( 7L );
66+
childEntity7.setName( "child7" );
67+
childEntity7.setField( "field7" );
68+
childEntity7.setChildField( "childField7" );
69+
70+
inTransaction( session -> {
71+
session.persist( childEntity3 );
72+
session.persist( childEntity4 );
73+
session.persist( childEntity5 );
74+
session.persist( childEntity6 );
75+
session.persist( childEntity7 );
76+
} );
77+
78+
inTransaction( session -> {
79+
Query<ChildEntity3> query = session.createQuery( "select c from ChildEntity3 c where c.field = :field",
80+
ChildEntity3.class );
81+
query.setParameter( "field", "field3" );
82+
assertThat( query.uniqueResult() ).isNotNull();
83+
} );
84+
85+
inTransaction( session -> {
86+
Query<ChildEntity4> query = session.createQuery( "select c from ChildEntity4 c where c.field = :field",
87+
ChildEntity4.class );
88+
query.setParameter( "field", "field4" );
89+
assertThat( query.uniqueResult() ).isNotNull();
90+
} );
91+
92+
inTransaction( session -> {
93+
Query<ChildEntity5> query = session.createQuery( "select c from ChildEntity5 c where c.field = :field",
94+
ChildEntity5.class );
95+
query.setParameter( "field", "field5" );
96+
assertThat( query.uniqueResult() ).isNotNull();
97+
} );
98+
99+
inTransaction( session -> {
100+
Query<ChildEntity6> query = session.createQuery( "select c from ChildEntity6 c where c.field = :field",
101+
ChildEntity6.class );
102+
query.setParameter( "field", "field6" );
103+
assertThat( query.uniqueResult() ).isNotNull();
104+
} );
105+
106+
inTransaction( session -> {
107+
Query<ChildEntity7> query = session.createQuery(
108+
"select c from ChildEntity7 c where c.field = :field", ChildEntity7.class );
109+
query.setParameter( "field", "field7" );
110+
assertThat( query.uniqueResult() ).isNotNull();
111+
} );
112+
}
113+
114+
@After
115+
public void cleanup() {
116+
sessionFactory().getSchemaManager().truncateMappedObjects();
117+
}
118+
}

0 commit comments

Comments
 (0)