Skip to content

Commit 6a8f392

Browse files
author
Artemiy Degtyarev
committed
add: StatementFactory new mode for scroll api
Signed-off-by: Artemiy Degtyarev <[email protected]>
1 parent d6afdbd commit 6a8f392

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/aot/JdbcCodeBlocks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ private CodeBlock select(ExecutionDecorator decorator, String rowMapper, String
779779
boolean dynamicProjection = StringUtils.hasText(context.getDynamicProjectionParameterName());
780780
Object queryResultTypeRef = dynamicProjection ? context.getDynamicProjectionParameterName() : queryResultType;
781781

782-
if (queryMethod.isCollectionQuery() || queryMethod.isSliceQuery() || queryMethod.isPageQuery() || queryMethod.isScrollQuery()) {
782+
if (queryMethod.isCollectionQuery() || queryMethod.isSliceQuery() || queryMethod.isPageQuery()) {
783783

784784
builder.addStatement(
785785
"$1T $2L = ($1T) " + decorator.decorate("getJdbcOperations().query($3L, $4L, new $5T<>($6L))"), List.class,

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StatementFactory.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public SelectionBuilder slice(RelationalPersistentEntity<?> entity) {
102102
}
103103

104104
public SelectionBuilder scroll(RelationalPersistentEntity<?> entity) {
105-
return new SelectionBuilder(entity, SelectionBuilder.Mode.SELECT);
105+
return new SelectionBuilder(entity, SelectionBuilder.Mode.SCROLL);
106106
}
107107

108108
public class SelectionBuilder {
@@ -117,7 +117,7 @@ public class SelectionBuilder {
117117
private Sort sort = Sort.unsorted();
118118
private Criteria criteria = Criteria.empty();
119119
private List<String> properties = new ArrayList<>();
120-
private ScrollPosition scrollPosition;
120+
private @Nullable ScrollPosition scrollPosition;
121121

122122
private SelectionBuilder(RelationalPersistentEntity<?> entity, Mode mode) {
123123
this.entity = entity;
@@ -256,10 +256,9 @@ SelectBuilder.SelectWhere applyLimitAndOffset(SelectBuilder.SelectLimitOffset li
256256
.offset(pageable.getOffset());
257257
}
258258

259-
if (scrollPosition != null && scrollPosition instanceof OffsetScrollPosition && !scrollPosition.isInitial()) {
259+
if (mode == Mode.SCROLL && scrollPosition != null && scrollPosition instanceof OffsetScrollPosition && !scrollPosition.isInitial())
260260
limitOffsetBuilder = limitOffsetBuilder
261261
.offset(((OffsetScrollPosition) scrollPosition).getOffset() + 1);
262-
}
263262

264263
return (SelectBuilder.SelectWhere) limitOffsetBuilder;
265264
}
@@ -297,7 +296,7 @@ private SelectBuilder.SelectJoin selectBuilder(Table table) {
297296
}
298297

299298
enum Mode {
300-
COUNT, EXISTS, SELECT, SLICE
299+
COUNT, EXISTS, SELECT, SLICE, SCROLL
301300
}
302301

303302
}

0 commit comments

Comments
 (0)