Skip to content

Commit 1cb5229

Browse files
committed
HHH-19476 Add test for issue
1 parent 5c1edfa commit 1cb5229

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.jpa;
6+
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.FetchType;
9+
import jakarta.persistence.Id;
10+
import jakarta.persistence.JoinColumn;
11+
import jakarta.persistence.ManyToOne;
12+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
13+
import org.hibernate.testing.orm.junit.JiraKey;
14+
import org.hibernate.testing.orm.junit.Jpa;
15+
import org.junit.jupiter.api.BeforeAll;
16+
import org.junit.jupiter.api.Test;
17+
18+
import java.util.List;
19+
20+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
21+
22+
@Jpa(
23+
annotatedClasses = {
24+
JpaProxyComplianceEnabledTest.Provider.class,
25+
JpaProxyComplianceEnabledTest.TelephoneNumber.class,
26+
},
27+
proxyComplianceEnabled = true
28+
)
29+
@JiraKey("HHH-19476")
30+
public class JpaProxyComplianceEnabledTest {
31+
32+
private static final Integer PROVIDER_ID = 1;
33+
private static final Integer TELEPHONE_NUMBER_ID = 2;
34+
35+
@BeforeAll
36+
public static void init(EntityManagerFactoryScope scope) {
37+
scope.inTransaction( entityManager -> {
38+
Provider provider = new Provider( PROVIDER_ID, "A Provider" );
39+
entityManager.persist( provider );
40+
41+
TelephoneNumber telephoneNumber1 = new TelephoneNumber(
42+
TELEPHONE_NUMBER_ID,
43+
"123-456-7890",
44+
provider
45+
);
46+
entityManager.persist( telephoneNumber1 );
47+
} );
48+
}
49+
50+
@Test
51+
public void testJoinFetchAfterFind(EntityManagerFactoryScope scope) {
52+
scope.inTransaction( entityManager -> {
53+
TelephoneNumber telephoneNumber = entityManager.find( TelephoneNumber.class, TELEPHONE_NUMBER_ID );
54+
List<TelephoneNumber> telephoneNumbers = entityManager.createQuery(
55+
"from TelephoneNumber t join fetch t.provider",
56+
TelephoneNumber.class )
57+
.getResultList();
58+
assertThat( telephoneNumbers.size() ).isEqualTo( 1 );
59+
}
60+
);
61+
}
62+
63+
@Entity(name = "TelephoneNumber")
64+
public static class TelephoneNumber {
65+
@Id
66+
private Integer id;
67+
68+
private String number;
69+
70+
@ManyToOne(fetch = FetchType.LAZY)
71+
@JoinColumn(name = "provider", nullable = false)
72+
private Provider provider;
73+
74+
public TelephoneNumber() {
75+
}
76+
77+
public TelephoneNumber(Integer id, String number, Provider provider) {
78+
this.id = id;
79+
this.number = number;
80+
this.provider = provider;
81+
}
82+
83+
public Integer getId() {
84+
return id;
85+
}
86+
87+
public String getNumber() {
88+
return number;
89+
}
90+
91+
public Provider getProvider() {
92+
return provider;
93+
}
94+
}
95+
96+
@Entity(name = "Provider")
97+
public static class Provider {
98+
99+
@Id
100+
private Integer id;
101+
102+
private String name;
103+
104+
public Provider() {
105+
}
106+
107+
public Provider(Integer id, String name) {
108+
this.id = id;
109+
this.name = name;
110+
}
111+
112+
public Integer getId() {
113+
return id;
114+
}
115+
116+
public String getName() {
117+
return name;
118+
}
119+
120+
}
121+
122+
}

0 commit comments

Comments
 (0)