Skip to content

Commit 02026de

Browse files
committed
HHH-3949 - Intrumentated to one relations can not be join fetched
1 parent 0e9a839 commit 02026de

File tree

5 files changed

+57
-20
lines changed

5 files changed

+57
-20
lines changed

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

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77
package org.hibernate.test.bytecode.enhancement;
88

9+
import org.hibernate.testing.FailureExpected;
910
import org.hibernate.testing.TestForIssue;
1011
import org.hibernate.testing.junit4.BaseUnitTestCase;
1112
import org.hibernate.test.bytecode.enhancement.association.ManyToManyAssociationTestTask;
@@ -51,9 +52,22 @@ public void testLazy() {
5152

5253
@Test
5354
@TestForIssue( jiraKey = "HHH-3949" )
54-
public void testHHH3949() {
55+
@FailureExpected( jiraKey = "HHH-3949" )
56+
public void testJoinFetchLazyToOneAttributeHql() {
5557
EnhancerTestUtils.runEnhancerTestTask( HHH3949TestTask1.class );
58+
}
59+
60+
@Test
61+
@TestForIssue( jiraKey = "HHH-3949" )
62+
@FailureExpected( jiraKey = "HHH-3949" )
63+
public void testJoinFetchLazyToOneAttributeHql2() {
5664
EnhancerTestUtils.runEnhancerTestTask( HHH3949TestTask2.class );
65+
}
66+
67+
@Test
68+
@TestForIssue( jiraKey = "HHH-3949" )
69+
@FailureExpected( jiraKey = "HHH-3949" )
70+
public void testHHH3949() {
5771
EnhancerTestUtils.runEnhancerTestTask( HHH3949TestTask3.class );
5872
EnhancerTestUtils.runEnhancerTestTask( HHH3949TestTask4.class );
5973
}

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/join/HHH3949TestTask1.java

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,37 @@
22

33
import java.util.List;
44

5+
import org.hibernate.Hibernate;
56
import org.hibernate.Session;
67

7-
import org.junit.Assert;
8+
import static org.junit.Assert.assertNotNull;
9+
import static org.junit.Assert.assertTrue;
810

911
public class HHH3949TestTask1 extends AbstractHHH3949TestTask {
1012

11-
@SuppressWarnings("unchecked")
1213
public void execute() {
14+
// verify the work around query
15+
performQueryAndVerifyResults( "from Person p fetch all properties left join fetch p.vehicle" );
16+
performQueryAndVerifyResults( "from Person p left join fetch p.vehicle" );
17+
}
18+
19+
@SuppressWarnings("unchecked")
20+
private void performQueryAndVerifyResults(String query) {
21+
// 1) open session
1322
Session session = getFactory().openSession();
14-
List<Person> persons = (List<Person>) session.createQuery( "from Person p left join fetch p.vehicle" ).list();
23+
// 2) perform the query
24+
List<Person> persons = (List<Person>) session.createQuery( query ).list();
25+
// 3) close the session : this ensures that no more queries and/or data loading happen
26+
session.close();
27+
28+
// 4) verify the results
1529
for ( Person person : persons ) {
30+
assertTrue( Hibernate.isInitialized( person ) );
1631
if ( person.getId() < 3 ) {
17-
Assert.assertNotNull( person.getVehicle() );
18-
Assert.assertNotNull( person.getVehicle().getDriver() );
32+
assertNotNull( person.getVehicle() );
33+
assertTrue( Hibernate.isInitialized( person.getVehicle() ) );
34+
assertNotNull( person.getVehicle().getDriver() );
1935
}
2036
}
21-
session.close();
2237
}
2338
}

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/join/HHH3949TestTask2.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,26 @@
88

99
public class HHH3949TestTask2 extends AbstractHHH3949TestTask {
1010

11-
@SuppressWarnings("unchecked")
1211
public void execute() {
12+
performQueryAndVerifyResults( "from Vehicle v fetch all properties left join fetch v.driver" );
13+
performQueryAndVerifyResults( "from Vehicle v left join fetch v.driver" );
14+
}
15+
16+
@SuppressWarnings("unchecked")
17+
public void performQueryAndVerifyResults(String query) {
18+
// 1) open session
1319
Session session = getFactory().openSession();
14-
List<Vehicle> vehicles = (List<Vehicle>) session.createQuery( "from Vehicle v left join fetch v.driver" )
15-
.list();
20+
// 2) perform the query
21+
List<Vehicle> vehicles = (List<Vehicle>) session.createQuery( query ).list();
22+
// 3) close the session : this ensures that no more queries and/or data loading happen
23+
session.close();
24+
25+
// 4) verify the results
1626
for ( Vehicle vehicle : vehicles ) {
1727
if ( vehicle.getId() < 3 ) {
1828
Assert.assertNotNull( vehicle.getDriver() );
1929
Assert.assertNotNull( vehicle.getDriver().getVehicle() );
2030
}
2131
}
22-
session.close();
2332
}
2433
}

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/join/HHH3949TestTask3.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ public class HHH3949TestTask3 extends AbstractHHH3949TestTask {
1212
@SuppressWarnings("unchecked")
1313
public void execute() {
1414
Session session = getFactory().openSession();
15-
List<Person> persons = (List<Person>) session.createCriteria( Person.class ).setFetchMode(
16-
"vehicle",
17-
FetchMode.JOIN
18-
).list();
15+
List<Person> persons = (List<Person>) session.createCriteria( Person.class )
16+
.setFetchMode( "vehicle", FetchMode.JOIN )
17+
.list();
1918
for ( Person person : persons ) {
2019
if ( person.getId() < 3 ) {
2120
Assert.assertNotNull( person.getVehicle() );

hibernate-core/src/test/java/org/hibernate/test/bytecode/enhancement/join/HHH3949TestTask4.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,17 @@ public class HHH3949TestTask4 extends AbstractHHH3949TestTask {
1212
@SuppressWarnings("unchecked")
1313
public void execute() {
1414
Session session = getFactory().openSession();
15-
List<Vehicle> vehicles = (List<Vehicle>) session.createCriteria( Vehicle.class ).setFetchMode(
16-
"driver",
17-
FetchMode.JOIN
18-
).list();
15+
List<Vehicle> vehicles = (List<Vehicle>) session.createCriteria( Vehicle.class )
16+
.setFetchMode( "driver", FetchMode.JOIN )
17+
.list();
18+
session.close();
19+
1920
for ( Vehicle vehicle : vehicles ) {
2021
if ( vehicle.getId() < 3 ) {
2122
Assert.assertNotNull( vehicle.getDriver() );
2223
Assert.assertNotNull( vehicle.getDriver().getVehicle() );
2324
}
2425
}
25-
session.close();
2626
}
2727

2828
}

0 commit comments

Comments
 (0)