diff --git a/querydsl-libraries/querydsl-core/src/main/java/com/querydsl/core/QueryModifiers.java b/querydsl-libraries/querydsl-core/src/main/java/com/querydsl/core/QueryModifiers.java index 536141911e..9bd6f0c572 100644 --- a/querydsl-libraries/querydsl-core/src/main/java/com/querydsl/core/QueryModifiers.java +++ b/querydsl-libraries/querydsl-core/src/main/java/com/querydsl/core/QueryModifiers.java @@ -14,6 +14,7 @@ package com.querydsl.core; import java.io.Serializable; +import java.util.Collections; import java.util.List; import java.util.Objects; import org.jetbrains.annotations.Nullable; @@ -109,6 +110,9 @@ public boolean isRestricting() { public List subList(List list) { if (!list.isEmpty()) { var from = offset != null ? toInt(offset) : 0; + if (from >= list.size()) { + return Collections.emptyList(); + } var to = limit != null ? (from + toInt(limit)) : list.size(); return list.subList(from, Math.min(to, list.size())); } else { diff --git a/querydsl-libraries/querydsl-core/src/test/java/com/querydsl/core/QueryModifiersTest.java b/querydsl-libraries/querydsl-core/src/test/java/com/querydsl/core/QueryModifiersTest.java index 75c4583adf..0cd1d065a3 100644 --- a/querydsl-libraries/querydsl-core/src/test/java/com/querydsl/core/QueryModifiersTest.java +++ b/querydsl-libraries/querydsl-core/src/test/java/com/querydsl/core/QueryModifiersTest.java @@ -80,5 +80,6 @@ public void subList() { assertThat(QueryModifiers.offset(2).subList(ints)).isEqualTo(Arrays.asList(3, 4, 5)); assertThat(QueryModifiers.limit(3).subList(ints)).isEqualTo(Arrays.asList(1, 2, 3)); assertThat(new QueryModifiers(3L, 1L).subList(ints)).isEqualTo(Arrays.asList(2, 3, 4)); + assertThat(QueryModifiers.offset(5).subList(ints)).isEmpty(); } }