From 1fbf778da29dd172c4bf48d45c2ee55e341f4ce8 Mon Sep 17 00:00:00 2001 From: Pranav Date: Fri, 19 Jan 2024 16:15:28 +0530 Subject: [PATCH] Fix count query creation for simple select. Closes: #3324 Original Pull Request: #3325 --- .../data/jpa/repository/query/QueryUtils.java | 3 ++- .../data/jpa/repository/query/QueryUtilsUnitTests.java | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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 d803096dd..11cd40b0f 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 @@ -81,6 +81,7 @@ import org.springframework.util.StringUtils; * @author Vladislav Yukharin * @author Chris Fraser * @author Donghun Shin + * @author Pranav HS */ public abstract class QueryUtils { @@ -156,7 +157,7 @@ public abstract class QueryUtils { builder.append("\\s*"); builder.append("(select\\s+((distinct)?((?s).+?)?)\\s+)?(from\\s+"); builder.append(IDENTIFIER); - builder.append("(?:\\s+as)?\\s+)"); + builder.append("(?:\\s+as)?\\s*)"); builder.append(IDENTIFIER_GROUP); builder.append("(.*)"); 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 9ab9c1fe2..1bef84f9b 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 @@ -49,6 +49,7 @@ import org.springframework.data.jpa.domain.JpaSort; * @author Chris Fraser * @author MichaƂ Pachucki * @author Erik Pellizzon + * @author Pranav HS */ class QueryUtilsUnitTests { @@ -934,4 +935,10 @@ class QueryUtilsUnitTests { where name like :name """, arg))).containsExactly("points"); } + + @Test // GH-3324 + void createCountQueryForSimpleQuery(){ + String originalQuery = "select * from User"; + assertCountQuery(originalQuery,"select count(*) from User"); + } }