Skip to content

Commit fc6f3bd

Browse files
committed
Polishing.
Introduce doWithPlainSelect(…) callback for easier filtering of Select subtypes. Add test for known (previously) failing case. See: #3869 Original pull request: #3870
1 parent 5ef7b6f commit fc6f3bd

File tree

2 files changed

+12
-23
lines changed

2 files changed

+12
-23
lines changed

spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ private String applySorting(@Nullable Select selectStatement, Sort sort, @Nullab
360360
return applySortingToSetOperationList(setOperationList, sort);
361361
}
362362

363-
doWithPlainSelect (selectStatement , it -> {
363+
doWithPlainSelect(selectStatement, it -> {
364364

365365
List<OrderByElement> orderByElements = new ArrayList<>(16);
366366
for (Sort.Order order : sort) {

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/JSqlParserQueryEnhancerUnitTests.java

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,17 @@ void truncateStatementShouldWork() {
232232
assertThat(queryEnhancer.hasConstructorExpression()).isFalse();
233233
}
234234

235+
@Test // GH-3869
236+
void shouldWorkWithParenthesedSelect() {
237+
238+
DefaultEntityQuery query = new TestEntityQuery("(SELECT is_contained_in(:innerId, :outerId))", true);
239+
QueryEnhancer queryEnhancer = QueryEnhancerFactory.forQuery(query).create(query);
240+
241+
assertThat(query.getQueryString()).isEqualTo("(SELECT is_contained_in(:innerId, :outerId))");
242+
assertThat(query.getAlias()).isNull();
243+
assertThat(queryEnhancer.getProjection()).isEqualTo("is_contained_in(:innerId, :outerId)");
244+
}
245+
235246
@ParameterizedTest // GH-2641
236247
@MethodSource("mergeStatementWorksSource")
237248
void mergeStatementWorksWithJSqlParser(String queryString, String alias) {
@@ -258,31 +269,9 @@ static Stream<Arguments> mergeStatementWorksSource() {
258269
null));
259270
}
260271

261-
@Test // GH-3869
262-
void shouldWorkWithParenthesedSelect() {
263-
264-
String query = "(SELECT is_contained_in(:innerId, :outerId))";
265-
266-
StringQuery stringQuery = new StringQuery(query, true);
267-
QueryEnhancer queryEnhancer = QueryEnhancerFactory.forQuery(stringQuery);
268-
269-
assertThat(stringQuery.getQueryString()).isEqualTo(query);
270-
assertThat(stringQuery.getAlias()).isNull();
271-
assertThat(queryEnhancer.getProjection()).isEqualTo("is_contained_in(:innerId, :outerId)");
272-
}
273-
274272
private static DefaultQueryRewriteInformation getRewriteInformation(Sort sort) {
275273
return new DefaultQueryRewriteInformation(sort,
276274
ReturnedType.of(Object.class, Object.class, new SpelAwareProxyProjectionFactory()));
277275
}
278276

279-
@Test // GH-3869
280-
void shouldWorkWithoutFromClause() {
281-
String query = "SELECT is_contained_in(:innerId, :outerId)";
282-
283-
StringQuery stringQuery = new StringQuery(query, true);
284-
285-
assertThat(stringQuery.getQueryString()).isEqualTo(query);
286-
}
287-
288277
}

0 commit comments

Comments
 (0)