Index: trunk/grails-app/services/TaskSearchService.groovy
===================================================================
--- trunk/grails-app/services/TaskSearchService.groovy	(revision 511)
+++ trunk/grails-app/services/TaskSearchService.groovy	(revision 512)
@@ -157,22 +157,31 @@
     */
     def getTasks(params, startDate=null, endDate=null) {
-        params.max = Math.min(params?.max?.toInteger() ?: 10, paramsMax)
-        params.offset = params?.offset?.toInteger() ?: 0
-        params.sort = params?.sort ?: "attentionFlag"
-        params.order = params?.order ?: "desc"
-
-        startDate = startDate ?: dateUtilService.today
-        endDate = endDate ?: dateUtilService.tomorrow
-
-        def taskInstanceList = Task.createCriteria().list(
-            max: params.max,
-            offset: params.offset,
-            sort: params.sort, 
-            order: params.order) {
-                lt("targetStartDate", endDate)
-                ge("targetCompletionDate", startDate)
-                eq("trash", false)
-            } // createCriteria
-    } // getTasks()
+        def paginateParams = [:]
+        paginateParams.max = Math.min(params?.max?.toInteger() ?: 10, paramsMax)
+        paginateParams.offset = params?.offset?.toInteger() ?: 0
+
+        def sort = "task." + (params?.sort ?: "attentionFlag")
+        def order = params?.order == "asc" ? "asc" : "desc"
+        def orderBy = " order by " + sort + ' ' + order
+
+        def namedParams = [:]
+        namedParams.startDate = startDate ?: dateUtilService.today
+        namedParams.endDate = endDate ?: dateUtilService.tomorrow
+
+        def baseQuery = "from Task as task \
+                                        where (task.trash = false \
+                                                    and task.targetStartDate < :endDate \
+                                                    and task.targetCompletionDate >= :startDate \
+                                        )"
+
+        def searchQuery = "select distinct task " + baseQuery + orderBy
+        def list = Task.executeQuery(searchQuery, namedParams, paginateParams)
+
+        def countQuery = "select count(distinct task) as taskCount " + baseQuery
+        def totalCount = Task.executeQuery(countQuery, namedParams)[0].toInteger()
+
+        def taskInstanceList = new PagedResultList(list, totalCount)
+        return taskInstanceList
+    } // getPTasks()
 
     /**
