You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by th...@apache.org on 2015/01/23 10:40:46 UTC

deltaspike git commit: DELTASPIKE-714 Fix count query generation

Repository: deltaspike
Updated Branches:
  refs/heads/master 15d021dde -> 81f47b326


DELTASPIKE-714 Fix count query generation

Simplistic approach - we don't care about the order when counting, so
just cutting it off.


Project: http://git-wip-us.apache.org/repos/asf/deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/deltaspike/commit/81f47b32
Tree: http://git-wip-us.apache.org/repos/asf/deltaspike/tree/81f47b32
Diff: http://git-wip-us.apache.org/repos/asf/deltaspike/diff/81f47b32

Branch: refs/heads/master
Commit: 81f47b3260a4fffc7883d50ac2fc868001fb4bb7
Parents: 15d021d
Author: Thomas Hug <Th...@ctp.com>
Authored: Fri Jan 23 10:39:28 2015 +0100
Committer: Thomas Hug <Th...@ctp.com>
Committed: Fri Jan 23 10:39:28 2015 +0100

----------------------------------------------------------------------
 .../postprocessor/CountQueryPostProcessor.java       |  5 +++++
 .../apache/deltaspike/data/impl/QueryResultTest.java | 15 +++++++++++++++
 .../data/test/service/SimpleRepository.java          |  3 +++
 3 files changed, 23 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/deltaspike/blob/81f47b32/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/postprocessor/CountQueryPostProcessor.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/postprocessor/CountQueryPostProcessor.java b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/postprocessor/CountQueryPostProcessor.java
index 118a583..c781d21 100644
--- a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/postprocessor/CountQueryPostProcessor.java
+++ b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/builder/postprocessor/CountQueryPostProcessor.java
@@ -112,6 +112,7 @@ public class CountQueryPostProcessor implements JpaQueryPostProcessor
             int selectIndex = lower.indexOf("select");
             int fromIndex = lower.indexOf("from");
             int whereIndex = lower.indexOf("where");
+            int orderByIndex = lower.indexOf("order by");
             if (selectIndex >= 0)
             {
                 select = query.substring("select".length(), fromIndex);
@@ -120,6 +121,10 @@ public class CountQueryPostProcessor implements JpaQueryPostProcessor
             {
                 from = query.substring(fromIndex, whereIndex);
                 where = query.substring(whereIndex);
+                if (orderByIndex > 0)
+                {
+                    where = where.substring(0, orderByIndex - whereIndex);
+                }
             }
             else
             {

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/81f47b32/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/QueryResultTest.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/QueryResultTest.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/QueryResultTest.java
index 860763e..e300ea0 100644
--- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/QueryResultTest.java
+++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/impl/QueryResultTest.java
@@ -298,6 +298,21 @@ public class QueryResultTest extends TransactionalTestCase
     }
 
     @Test
+    public void should_count_with_orderby()
+    {
+        // given
+        final String name = "testCountWithOrderBy";
+        builder.createSimple(name);
+        builder.createSimple(name);
+
+        // when
+        long result = repo.findByQueryWithOrderBy(name).count();
+
+        // then
+        assertEquals(2L, result);
+    }
+
+    @Test
     public void should_query_optional()
     {
         // given

http://git-wip-us.apache.org/repos/asf/deltaspike/blob/81f47b32/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java
----------------------------------------------------------------------
diff --git a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java
index 8cc16eb..4f1092e 100755
--- a/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java
+++ b/deltaspike/modules/data/impl/src/test/java/org/apache/deltaspike/data/test/service/SimpleRepository.java
@@ -71,6 +71,9 @@ public abstract class SimpleRepository extends AbstractEntityRepository<Simple,
     @Query("select count(s) from Simple s where s.name = ?1")
     public abstract Long findCountByQuery(String name);
 
+    @Query("select s from Simple s where s.name = ?1 order by s.counter desc")
+    public abstract QueryResult<Simple> findByQueryWithOrderBy(String name);
+
     public abstract Simple findByNameAndEnabled(String name, Boolean enabled);
 
     public abstract Simple findOptionalByName(String name);