Skip to content

Commit 95dd7be

Browse files
committed
Add integration tests for subquery modifiers in HibernateBase
- Test subquery with LIMIT and OFFSET in WHERE clause - Test subquery with LIMIT in SELECT clause - Test subquery with OFFSET only - Verify actual functionality - Validate correct result count and data ordering
1 parent e61e97e commit 95dd7be

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

querydsl-libraries/querydsl-jpa/src/test/java/com/querydsl/jpa/HibernateBase.java

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,4 +176,75 @@ public void createQuery4() {
176176
.distinct()
177177
.transform(GroupBy.groupBy(cat.id).as(cat)));
178178
}
179+
180+
@Test
181+
public void subQueryWithLimitAndOffset() {
182+
var kitten = new QCat("kitten");
183+
184+
List<Integer> allIds = query().from(kitten).orderBy(kitten.id.asc()).select(kitten.id).fetch();
185+
186+
List<Integer> expectedIds = allIds.subList(1, 4);
187+
188+
List<Cat> results =
189+
query()
190+
.from(cat)
191+
.where(
192+
cat.id.in(
193+
JPAExpressions.select(kitten.id)
194+
.from(kitten)
195+
.orderBy(kitten.id.asc())
196+
.limit(3)
197+
.offset(1)))
198+
.orderBy(cat.id.asc())
199+
.select(cat)
200+
.fetch();
201+
202+
assertThat(results).hasSize(3);
203+
assertThat(results.stream().map(Cat::getId).toList()).isEqualTo(expectedIds);
204+
}
205+
206+
@Test
207+
public void subQueryWithLimitInSelectClause() {
208+
var firstCat = query().from(cat).orderBy(cat.id.asc()).select(cat).fetchFirst();
209+
var mate = new QCat("mate");
210+
211+
Integer result =
212+
query()
213+
.from(cat)
214+
.where(cat.id.eq(firstCat.getId()))
215+
.select(
216+
JPAExpressions.select(mate.id)
217+
.from(mate)
218+
.where(mate.name.eq(firstCat.getName()))
219+
.orderBy(mate.id.asc())
220+
.limit(1))
221+
.fetchFirst();
222+
223+
assertThat(result).isEqualTo(firstCat.getId());
224+
}
225+
226+
@Test
227+
public void subQueryWithOffsetOnly() {
228+
var kitten = new QCat("kitten");
229+
230+
List<Integer> allIds = query().from(kitten).orderBy(kitten.id.asc()).select(kitten.id).fetch();
231+
232+
List<Integer> expectedIds = allIds.subList(2, allIds.size());
233+
234+
List<Cat> results =
235+
query()
236+
.from(cat)
237+
.where(
238+
cat.id.in(
239+
JPAExpressions.select(kitten.id)
240+
.from(kitten)
241+
.orderBy(kitten.id.asc())
242+
.offset(2)))
243+
.orderBy(cat.id.asc())
244+
.select(cat)
245+
.fetch();
246+
247+
assertThat(results).hasSize(expectedIds.size());
248+
assertThat(results.stream().map(Cat::getId).toList()).isEqualTo(expectedIds);
249+
}
179250
}

0 commit comments

Comments
 (0)