diff --git a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java index 328958bab..dfe16b94c 100644 --- a/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java +++ b/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java @@ -135,6 +135,7 @@ public abstract class QueryUtils { builder = new StringBuilder(); builder.append("select"); builder.append("\\s+"); // at least one space separating + builder.append("(.*\\s+)?"); // anything in between (e.g. distinct) at least one space separating builder.append("new"); builder.append("\\s+"); // at least one space separating builder.append(IDENTIFIER); diff --git a/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java index f74699e8a..f0cd00184 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java @@ -323,7 +323,15 @@ public class QueryUtilsUnitTests { assertThat(applySorting(query, sort, "c"), endsWith("order by c.dPropertyStartingWithJoinAlias asc")); } - private void assertCountQuery(String originalQuery, String countQuery) { + /** + * @see DATAJPA-938 + */ + @Test + public void detectsConstructorExpressionInDistinctQuery() { + assertThat(hasConstructorExpression("select distinct new Foo() from Bar b"), is(true)); + } + + private static void assertCountQuery(String originalQuery, String countQuery) { assertThat(createCountQueryFor(originalQuery), is(countQuery)); } }