Skip to content

Commit 4d75316

Browse files
dreab8beikov
authored andcommitted
HHH-19369 Add test for issue
1 parent 62ca0fc commit 4d75316

15 files changed

+444
-5
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+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
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+
import org.hibernate.testing.bytecode.enhancement.extension.BytecodeEnhanced;
12+
import org.hibernate.testing.orm.junit.DomainModel;
13+
import org.hibernate.testing.orm.junit.Jira;
14+
import org.hibernate.testing.orm.junit.SessionFactory;
15+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
16+
import org.junit.jupiter.api.AfterAll;
17+
import org.junit.jupiter.api.Test;
18+
19+
import static org.assertj.core.api.Assertions.assertThat;
20+
21+
@DomainModel(annotatedClasses = {
22+
Ancestor.class,
23+
AncestorEntity.class,
24+
ChildEntity2.class,
25+
ChildEntity10.class
26+
})
27+
@SessionFactory
28+
@Jira("https://hibernate.atlassian.net/browse/HHH-19372")
29+
@BytecodeEnhanced
30+
public class HierarchyBytecodeOptimizerMethodVisibilityTest {
31+
32+
@Test
33+
public void testOptimizerSetPropertyValues(SessionFactoryScope scope) {
34+
ChildEntity2 childEntity2 = new ChildEntity2();
35+
childEntity2.setId( 1L );
36+
childEntity2.setField( "field" );
37+
childEntity2.setChieldField( "childField" );
38+
39+
ChildEntity10 childEntity10 = new ChildEntity10();
40+
childEntity10.setId( 3L );
41+
childEntity10.setField( "field10" );
42+
childEntity10.setChieldField( "childField3" );
43+
44+
scope.inTransaction( session -> {
45+
session.persist( childEntity2 );
46+
session.persist( childEntity10 );
47+
} );
48+
49+
scope.inTransaction( session -> {
50+
Query<ChildEntity2> query = session.createQuery( "select c from ChildEntity2 c where c.field = :field",
51+
ChildEntity2.class );
52+
query.setParameter( "field", "field" );
53+
assertThat( query.uniqueResult() ).isNotNull();
54+
} );
55+
56+
scope.inTransaction( session -> {
57+
Query<ChildEntity10> query = session.createQuery( "select c from ChildEntity10 c where c.field = :field",
58+
ChildEntity10.class );
59+
query.setParameter( "field", "field10" );
60+
assertThat( query.uniqueResult() ).isNotNull();
61+
} );
62+
}
63+
64+
@AfterAll
65+
public void cleanup(SessionFactoryScope scope) {
66+
scope.getSessionFactory().getSchemaManager().truncateMappedObjects();
67+
}
68+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
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+
import org.hibernate.testing.bytecode.enhancement.extension.BytecodeEnhanced;
10+
import org.hibernate.testing.orm.junit.DomainModel;
11+
import org.hibernate.testing.orm.junit.Jira;
12+
import org.hibernate.testing.orm.junit.SessionFactory;
13+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
14+
import org.junit.jupiter.api.AfterAll;
15+
import org.junit.jupiter.api.Test;
16+
17+
import static org.assertj.core.api.Assertions.assertThat;
18+
19+
@DomainModel(annotatedClasses = {
20+
Ancestor.class,
21+
ParentEntity.class,
22+
ChildEntity3.class,
23+
ChildEntity4.class,
24+
ChildEntity5.class,
25+
ChildEntity6.class,
26+
ChildEntity7.class,
27+
ChildEntity8.class,
28+
ChildEntity9.class
29+
})
30+
@SessionFactory
31+
@Jira("https://hibernate.atlassian.net/browse/HHH-19369")
32+
@BytecodeEnhanced
33+
public class HierarchyBytecodeOptimizerOrderingTest {
34+
35+
@Test
36+
public void testOptimizerSetPropertyValues(SessionFactoryScope scope) {
37+
ChildEntity3 childEntity3 = new ChildEntity3();
38+
childEntity3.setId( 3L );
39+
childEntity3.setName( "child3" );
40+
childEntity3.setField( "field3" );
41+
childEntity3.setChieldField( "childField3" );
42+
43+
ChildEntity4 childEntity4 = new ChildEntity4();
44+
childEntity4.setId( 4L );
45+
childEntity4.setName( "child4" );
46+
childEntity4.setField( "field4" );
47+
childEntity4.setChieldField( "childField4" );
48+
49+
ChildEntity5 childEntity5 = new ChildEntity5();
50+
childEntity5.setId( 5L );
51+
childEntity5.setName( "child5" );
52+
childEntity5.setField( "field5" );
53+
childEntity5.setChieldField( "childField5" );
54+
55+
ChildEntity6 childEntity6 = new ChildEntity6();
56+
childEntity6.setId( 6L );
57+
childEntity6.setName( "child6" );
58+
childEntity6.setField( "field6" );
59+
childEntity6.setChieldField( "childField6" );
60+
61+
ChildEntity7 childEntity7 = new ChildEntity7();
62+
childEntity7.setId( 7L );
63+
childEntity7.setName( "child7" );
64+
childEntity7.setField( "field7" );
65+
childEntity7.setChildField( "childField7" );
66+
67+
scope.inTransaction( session -> {
68+
session.persist( childEntity3 );
69+
session.persist( childEntity4 );
70+
session.persist( childEntity5 );
71+
session.persist( childEntity6 );
72+
session.persist( childEntity7 );
73+
} );
74+
75+
scope.inTransaction( session -> {
76+
Query<ChildEntity3> query = session.createQuery( "select c from ChildEntity3 c where c.field = :field",
77+
ChildEntity3.class );
78+
query.setParameter( "field", "field3" );
79+
assertThat( query.uniqueResult() ).isNotNull();
80+
} );
81+
82+
scope.inTransaction( session -> {
83+
Query<ChildEntity4> query = session.createQuery( "select c from ChildEntity4 c where c.field = :field",
84+
ChildEntity4.class );
85+
query.setParameter( "field", "field4" );
86+
assertThat( query.uniqueResult() ).isNotNull();
87+
} );
88+
89+
scope.inTransaction( session -> {
90+
Query<ChildEntity5> query = session.createQuery( "select c from ChildEntity5 c where c.field = :field",
91+
ChildEntity5.class );
92+
query.setParameter( "field", "field5" );
93+
assertThat( query.uniqueResult() ).isNotNull();
94+
} );
95+
96+
scope.inTransaction( session -> {
97+
Query<ChildEntity6> query = session.createQuery( "select c from ChildEntity6 c where c.field = :field",
98+
ChildEntity6.class );
99+
query.setParameter( "field", "field6" );
100+
assertThat( query.uniqueResult() ).isNotNull();
101+
} );
102+
103+
scope.inTransaction( session -> {
104+
Query<ChildEntity7> query = session.createQuery(
105+
"select c from ChildEntity7 c where c.field = :field", ChildEntity7.class );
106+
query.setParameter( "field", "field7" );
107+
assertThat( query.uniqueResult() ).isNotNull();
108+
} );
109+
}
110+
111+
@AfterAll
112+
public void cleanup(SessionFactoryScope scope) {
113+
scope.getSessionFactory().getSchemaManager().truncateMappedObjects();
114+
}
115+
}

0 commit comments

Comments
 (0)