Skip to content

Commit 2ed381f

Browse files
committed
HHH-19372 HHH-19369 Add test for issue
1 parent 4ef1d9c commit 2ed381f

File tree

9 files changed

+263
-16
lines changed

9 files changed

+263
-16
lines changed
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 ParentEntity {
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 ParentEntity {
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+
}

hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/optimizer/HierarchyBytecodeOptimizerTest.java

Lines changed: 102 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@
55
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
66

77
import org.hibernate.orm.test.bytecode.enhancement.optimizer.child.ChildEntity;
8+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.child.ChildEntity2;
9+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.child.ChildEntity7;
10+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.parent.ChildEntity4;
11+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.parent.ChildEntity6;
12+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.parent.Parent;
813
import org.hibernate.query.Query;
9-
1014
import org.hibernate.testing.bytecode.enhancement.extension.BytecodeEnhanced;
1115
import org.hibernate.testing.orm.junit.DomainModel;
1216
import org.hibernate.testing.orm.junit.Jira;
@@ -18,28 +22,122 @@
1822
import static org.assertj.core.api.Assertions.assertThat;
1923

2024
@DomainModel(annotatedClasses = {
25+
Parent.class,
2126
ParentEntity.class,
2227
ChildEntity.class,
28+
ChildEntity3.class,
29+
ChildEntity2.class,
30+
ChildEntity4.class,
31+
ChildEntity5.class,
32+
ChildEntity6.class,
33+
ChildEntity7.class
2334
})
2435
@SessionFactory
25-
@Jira( "https://hibernate.atlassian.net/browse/HHH-19059" )
36+
@Jira("https://hibernate.atlassian.net/browse/HHH-19059")
2637
@BytecodeEnhanced
2738
public class HierarchyBytecodeOptimizerTest {
2839

2940
@Test
3041
public void testOptimizerSetPropertyValues(SessionFactoryScope scope) {
3142
ChildEntity childEntity = new ChildEntity();
3243
childEntity.setId( 1L );
44+
childEntity.setName( "child" );
3345
childEntity.setField( "field" );
3446
childEntity.setChieldField( "childField" );
3547

36-
scope.inTransaction( session -> session.persist( childEntity ) );
48+
ChildEntity2 childEntity2 = new ChildEntity2();
49+
childEntity2.setId( 2L );
50+
childEntity2.setName( "child2" );
51+
childEntity2.setField( "field2" );
52+
childEntity2.setChieldField( "childField2" );
53+
54+
ChildEntity3 childEntity3 = new ChildEntity3();
55+
childEntity3.setId( 3L );
56+
childEntity3.setName( "child3" );
57+
childEntity3.setField( "field3" );
58+
childEntity3.setChieldField( "childField3" );
59+
60+
ChildEntity4 childEntity4 = new ChildEntity4();
61+
childEntity4.setId( 4L );
62+
childEntity4.setName( "child4" );
63+
childEntity4.setField( "field4" );
64+
childEntity4.setChieldField( "childField4" );
65+
66+
ChildEntity5 childEntity5 = new ChildEntity5();
67+
childEntity5.setId( 5L );
68+
childEntity5.setName( "child5" );
69+
childEntity5.setField( "field5" );
70+
childEntity5.setChieldField( "childField5" );
71+
72+
ChildEntity6 childEntity6 = new ChildEntity6();
73+
childEntity6.setId( 6L );
74+
childEntity6.setName( "child6" );
75+
childEntity6.setField( "field6" );
76+
childEntity6.setChieldField( "childField6" );
77+
78+
ChildEntity7 childEntity7 = new ChildEntity7();
79+
childEntity7.setId( 7L );
80+
childEntity7.setName( "child7" );
81+
childEntity7.setField( "field7" );
82+
childEntity7.setChildField( "childField7" );
83+
84+
scope.inTransaction( session -> {
85+
session.persist( childEntity );
86+
session.persist( childEntity2 );
87+
session.persist( childEntity3 );
88+
session.persist( childEntity4 );
89+
session.persist( childEntity5 );
90+
session.persist( childEntity6 );
91+
session.persist( childEntity7 );
92+
} );
3793

3894
scope.inTransaction( session -> {
39-
Query<ChildEntity> query = session.createQuery( "select c from ChildEntity c where c.field = :field", ChildEntity.class);
95+
Query<ChildEntity> query = session.createQuery( "select c from ChildEntity c where c.field = :field",
96+
ChildEntity.class );
4097
query.setParameter( "field", "field" );
4198
assertThat( query.uniqueResult() ).isNotNull();
4299
} );
100+
101+
scope.inTransaction( session -> {
102+
Query<ChildEntity2> query = session.createQuery("select c from ChildEntity2 c where c.field = :field", ChildEntity2.class );
103+
query.setParameter( "field", "field2" );
104+
assertThat( query.uniqueResult() ).isNotNull();
105+
} );
106+
107+
scope.inTransaction( session -> {
108+
Query<ChildEntity3> query = session.createQuery( "select c from ChildEntity3 c where c.field = :field",
109+
ChildEntity3.class );
110+
query.setParameter( "field", "field3" );
111+
assertThat( query.uniqueResult() ).isNotNull();
112+
} );
113+
114+
scope.inTransaction( session -> {
115+
Query<ChildEntity4> query = session.createQuery( "select c from ChildEntity4 c where c.field = :field",
116+
ChildEntity4.class );
117+
query.setParameter( "field", "field4" );
118+
assertThat( query.uniqueResult() ).isNotNull();
119+
} );
120+
121+
scope.inTransaction( session -> {
122+
Query<ChildEntity5> query = session.createQuery( "select c from ChildEntity5 c where c.field = :field",
123+
ChildEntity5.class );
124+
query.setParameter( "field", "field5" );
125+
assertThat( query.uniqueResult() ).isNotNull();
126+
} );
127+
128+
scope.inTransaction( session -> {
129+
Query<ChildEntity6> query = session.createQuery( "select c from ChildEntity6 c where c.field = :field",
130+
ChildEntity6.class );
131+
query.setParameter( "field", "field6" );
132+
assertThat( query.uniqueResult() ).isNotNull();
133+
} );
134+
135+
scope.inTransaction( session -> {
136+
Query<ChildEntity7> query = session.createQuery(
137+
"select c from ChildEntity7 c where c.field = :field", ChildEntity7.class );
138+
query.setParameter( "field", "field7" );
139+
assertThat( query.uniqueResult() ).isNotNull();
140+
} );
43141
}
44142

45143
@AfterAll

hibernate-core/src/test/java/org/hibernate/orm/test/bytecode/enhancement/optimizer/ParentEntity.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,16 @@
55
package org.hibernate.orm.test.bytecode.enhancement.optimizer;
66

77
import jakarta.persistence.Entity;
8-
import jakarta.persistence.Id;
98
import jakarta.persistence.Inheritance;
109
import jakarta.persistence.InheritanceType;
10+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.parent.Parent;
1111

1212
@Entity(name = "ParentEntity")
1313
@Inheritance(strategy = InheritanceType.JOINED)
14-
public class ParentEntity {
15-
@Id
16-
private Long id;
14+
public class ParentEntity extends Parent {
1715

1816
private String field;
1917

20-
public Long getId() {
21-
return id;
22-
}
23-
24-
public void setId(Long id) {
25-
this.id = id;
26-
}
27-
2818
public String getField() {
2919
return field;
3020
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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.child;
6+
7+
import jakarta.persistence.Entity;
8+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.ParentEntity;
9+
10+
@Entity(name = "ChildEntity2")
11+
public class ChildEntity2 extends ParentEntity {
12+
private String childField;
13+
14+
public String getChildField() {
15+
return childField;
16+
}
17+
18+
public void setChieldField(String childField) {
19+
this.childField = childField;
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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.child;
6+
7+
import jakarta.persistence.Entity;
8+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.ParentEntity;
9+
10+
@Entity(name = "ChildEntity7")
11+
public class ChildEntity7 extends ParentEntity {
12+
private String childField;
13+
14+
public String getChildField() {
15+
return childField;
16+
}
17+
18+
public void setChildField(String childField) {
19+
this.childField = childField;
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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.parent;
6+
7+
import jakarta.persistence.Entity;
8+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.ParentEntity;
9+
10+
@Entity(name = "ChildEntity4")
11+
public class ChildEntity4 extends ParentEntity {
12+
private String childField;
13+
14+
public String getChildField() {
15+
return childField;
16+
}
17+
18+
public void setChieldField(String childField) {
19+
this.childField = childField;
20+
}
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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.parent;
6+
7+
import jakarta.persistence.Entity;
8+
import org.hibernate.orm.test.bytecode.enhancement.optimizer.ParentEntity;
9+
10+
@Entity(name = "ChildEntity6")
11+
public class ChildEntity6 extends ParentEntity {
12+
private String childField;
13+
14+
public String getChildField() {
15+
return childField;
16+
}
17+
18+
public void setChieldField(String childField) {
19+
this.childField = childField;
20+
}
21+
}
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.parent;
6+
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.Id;
9+
import jakarta.persistence.Inheritance;
10+
import jakarta.persistence.InheritanceType;
11+
12+
@Entity(name = "Parent")
13+
@Inheritance(strategy = InheritanceType.JOINED)
14+
public class Parent {
15+
@Id
16+
private Long id;
17+
18+
private String name;
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 getName() {
29+
return name;
30+
}
31+
32+
public void setName(String name) {
33+
this.name = name;
34+
}
35+
}

0 commit comments

Comments
 (0)