diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java index 61ce7f489f..1f04763db9 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/QueryUtils.java @@ -90,6 +90,7 @@ * @author Yanming Zhou * @author Alim Naizabek * @author Jakub Soltys + * @author Young-ho Kim */ public abstract class QueryUtils { @@ -184,7 +185,7 @@ public abstract class QueryUtils { builder = new StringBuilder(); // any function call including parameters within the brackets - builder.append("\\w+\\s*\\([\\w\\.,\\s'=:;\\\\?]+\\)"); + builder.append("\\w+\\s*\\([\\w\\.,\\s'=:;\\\\?\\*]+\\)"); // the potential alias builder.append("\\s+(?:as)+\\s+([\\w\\.]+)"); diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java index 4cb121908b..1470919405 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java @@ -52,6 +52,7 @@ * @author Pranav HS * @author Eduard Dudar * @author Mark Paluch + * @author Young-ho Kim */ class QueryUtilsUnitTests { @@ -560,6 +561,13 @@ void discoversFunctionAliasesCorrectly() { assertThat(getFunctionAliases("COUNT(1) as alias1, 2 as alias2")).containsExactly("alias1"); } + @Test // GH-4242 + void discoversCountStarFunctionAlias() { + + assertThat(getFunctionAliases("SELECT COUNT(*) as total FROM User u")).containsExactly("total"); + assertThat(getFunctionAliases("SELECT u, COUNT(*) as cnt FROM User u GROUP BY u")).containsExactly("cnt"); + } + @Test // GH-3911 void discoversFieldAliasesCorrectly() {