Skip to content

Commit 89aab0d

Browse files
committed
HHH-19476 Add test for issue
1 parent f823b60 commit 89aab0d

File tree

1 file changed

+124
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)