Skip to content

Commit f670430

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 71f2ab3 commit f670430

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
@@ -245,6 +245,17 @@ void truncateStatementShouldWork() {
245245
assertThat(queryEnhancer.hasConstructorExpression()).isFalse();
246246
}
247247

248+
@Test // GH-3869
249+
void shouldWorkWithParenthesedSelect() {
250+
251+
DefaultEntityQuery query = new TestEntityQuery("(SELECT is_contained_in(:innerId, :outerId))", true);
252+
QueryEnhancer queryEnhancer = QueryEnhancerFactory.forQuery(query).create(query);
253+
254+
assertThat(query.getQueryString()).isEqualTo("(SELECT is_contained_in(:innerId, :outerId))");
255+
assertThat(query.getAlias()).isNull();
256+
assertThat(queryEnhancer.getProjection()).isEqualTo("is_contained_in(:innerId, :outerId)");
257+
}
258+
248259
@ParameterizedTest // GH-2641
249260
@MethodSource("mergeStatementWorksSource")
250261
void mergeStatementWorksWithJSqlParser(String queryString, String alias) {
@@ -271,31 +282,9 @@ static Stream<Arguments> mergeStatementWorksSource() {
271282
null));
272283
}
273284

274-
@Test // GH-3869
275-
void shouldWorkWithParenthesedSelect() {
276-
277-
String query = "(SELECT is_contained_in(:innerId, :outerId))";
278-
279-
StringQuery stringQuery = new StringQuery(query, true);
280-
QueryEnhancer queryEnhancer = QueryEnhancerFactory.forQuery(stringQuery);
281-
282-
assertThat(stringQuery.getQueryString()).isEqualTo(query);
283-
assertThat(stringQuery.getAlias()).isNull();
284-
assertThat(queryEnhancer.getProjection()).isEqualTo("is_contained_in(:innerId, :outerId)");
285-
}
286-
287285
private static DefaultQueryRewriteInformation getRewriteInformation(Sort sort) {
288286
return new DefaultQueryRewriteInformation(sort,
289287
ReturnedType.of(Object.class, Object.class, new SpelAwareProxyProjectionFactory()));
290288
}
291289

292-
@Test // GH-3869
293-
void shouldWorkWithoutFromClause() {
294-
String query = "SELECT is_contained_in(:innerId, :outerId)";
295-
296-
StringQuery stringQuery = new StringQuery(query, true);
297-
298-
assertThat(stringQuery.getQueryString()).isEqualTo(query);
299-
}
300-
301290
}

0 commit comments

Comments
 (0)