Skip to content

Commit 3b47b85

Browse files
committed
HHH-14874 Add test for issue
1 parent cc31223 commit 3b47b85

File tree

1 file changed

+169
-0
lines changed

1 file changed

+169
-0
lines changed
Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
1+
package org.hibernate.orm.test.bytecode.enhancement.lazy.group;
2+
3+
import java.util.List;
4+
5+
import org.hibernate.Hibernate;
6+
import org.hibernate.annotations.LazyGroup;
7+
import org.hibernate.cfg.AvailableSettings;
8+
import org.hibernate.cfg.Configuration;
9+
10+
import org.hibernate.testing.TestForIssue;
11+
import org.hibernate.testing.bytecode.enhancement.BytecodeEnhancerRunner;
12+
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
13+
import org.junit.Before;
14+
import org.junit.Test;
15+
import org.junit.runner.RunWith;
16+
17+
import jakarta.persistence.Basic;
18+
import jakarta.persistence.Column;
19+
import jakarta.persistence.Entity;
20+
import jakarta.persistence.Enumerated;
21+
import jakarta.persistence.FetchType;
22+
import jakarta.persistence.GeneratedValue;
23+
import jakarta.persistence.GenerationType;
24+
import jakarta.persistence.Id;
25+
26+
import static org.hamcrest.CoreMatchers.is;
27+
import static org.hamcrest.MatcherAssert.assertThat;
28+
import static org.junit.Assert.assertFalse;
29+
import static org.junit.Assert.assertTrue;
30+
31+
@RunWith(BytecodeEnhancerRunner.class)
32+
@TestForIssue(jiraKey = "HHH-14874")
33+
public class BasicAttributesLazyGroupTest extends BaseCoreFunctionalTestCase {
34+
35+
@Override
36+
public Class<?>[] getAnnotatedClasses() {
37+
return new Class[] { Review.class };
38+
}
39+
40+
@Override
41+
protected void configure(Configuration configuration) {
42+
configuration.setProperty( AvailableSettings.USE_SECOND_LEVEL_CACHE, "false" );
43+
configuration.setProperty( AvailableSettings.ENABLE_LAZY_LOAD_NO_TRANS, "true" );
44+
}
45+
46+
@Before
47+
public void setUp() {
48+
inTransaction(
49+
session -> {
50+
Review review = new Review();
51+
review.setComment( "My first review" );
52+
review.setRating( Rating.ONE );
53+
session.save( review );
54+
}
55+
);
56+
}
57+
58+
@Test
59+
public void testLoad() {
60+
inTransaction( session -> {
61+
final Review review = session.load( Review.class, 1L );
62+
63+
assertFalse( Hibernate.isPropertyInitialized( review, "rating" ) );
64+
assertFalse( Hibernate.isPropertyInitialized( review, "comment" ) );
65+
66+
assertThat( review.getRating(), is( Rating.ONE ) );
67+
68+
assertTrue( Hibernate.isPropertyInitialized( review, "rating" ) );
69+
assertFalse( Hibernate.isPropertyInitialized( review, "comment" ) );
70+
} );
71+
}
72+
73+
@Test
74+
public void testLoad2() {
75+
inTransaction( session -> {
76+
final Review review = session.load( Review.class, 1L );
77+
78+
assertFalse( Hibernate.isPropertyInitialized( review, "rating" ) );
79+
assertFalse( Hibernate.isPropertyInitialized( review, "comment" ) );
80+
81+
assertThat( review.getComment(), is( "My first review" ) );
82+
83+
assertTrue( Hibernate.isPropertyInitialized( review, "comment" ) );
84+
assertFalse( Hibernate.isPropertyInitialized( review, "rating" ) );
85+
} );
86+
}
87+
88+
@Test
89+
public void testLoad3() {
90+
inTransaction( session -> {
91+
final Review review = session.load( Review.class, 1L );
92+
93+
assertThat( review.getComment(), is( "My first review" ) );
94+
assertThat( review.getRating(), is( Rating.ONE ) );
95+
} );
96+
}
97+
98+
@Test
99+
public void testLoad4() {
100+
inTransaction( session -> {
101+
final Review review = session.load( Review.class, 1L );
102+
assertThat( review.getRating(), is( Rating.ONE ) );
103+
assertThat( review.getComment(), is( "My first review" ) );
104+
} );
105+
}
106+
107+
@Test
108+
public void testHql() {
109+
inTransaction( session -> {
110+
final List<Review> reviews = session.createQuery( "select r from Review r" ).list();
111+
assertThat( reviews.size(), is( 1 ) );
112+
113+
final Review review = reviews.get( 0 );
114+
assertFalse( Hibernate.isPropertyInitialized( review, "rating" ) );
115+
assertFalse( Hibernate.isPropertyInitialized( review, "comment" ) );
116+
117+
assertThat( review.getRating(), is( Rating.ONE ) );
118+
119+
assertTrue( Hibernate.isPropertyInitialized( review, "rating" ) );
120+
assertFalse( Hibernate.isPropertyInitialized( review, "comment" ) );
121+
} );
122+
}
123+
124+
125+
@Entity(name = "Review")
126+
public static class Review {
127+
128+
@Id
129+
@GeneratedValue(strategy = GenerationType.AUTO)
130+
private Long id;
131+
132+
@Enumerated
133+
@Basic(fetch = FetchType.LAZY)
134+
private Rating rating;
135+
136+
@Basic(fetch = FetchType.LAZY)
137+
@LazyGroup("comment")
138+
@Column(name = "review_comment")
139+
private String comment;
140+
141+
public Long getId() {
142+
return id;
143+
}
144+
145+
public void setId(Long id) {
146+
this.id = id;
147+
}
148+
149+
public Rating getRating() {
150+
return rating;
151+
}
152+
153+
public void setRating(Rating rating) {
154+
this.rating = rating;
155+
}
156+
157+
public String getComment() {
158+
return comment;
159+
}
160+
161+
public void setComment(String comment) {
162+
this.comment = comment;
163+
}
164+
}
165+
166+
enum Rating {
167+
ONE, TWO
168+
}
169+
}

0 commit comments

Comments
 (0)