diff --git a/cms-plugin/src/main/java/com/agiletec/plugins/jacms/aps/system/services/content/AbstractContentSearcherDAO.java b/cms-plugin/src/main/java/com/agiletec/plugins/jacms/aps/system/services/content/AbstractContentSearcherDAO.java index 575e5c2b9..94c628fc9 100644 --- a/cms-plugin/src/main/java/com/agiletec/plugins/jacms/aps/system/services/content/AbstractContentSearcherDAO.java +++ b/cms-plugin/src/main/java/com/agiletec/plugins/jacms/aps/system/services/content/AbstractContentSearcherDAO.java @@ -220,7 +220,9 @@ protected String createQueryString(EntitySearchFilter[] filters, String[] groups if (!isCount) { boolean ordered = this.appendOrderQueryBlocks(filters, query, false); this.appendLimitQueryBlock(filters, query); - } + } else { + this.closeMasterCountQueryBlock(query); + } //System.out.println("********** " + query.toString()); return query.toString(); } diff --git a/cms-plugin/src/main/java/com/agiletec/plugins/jacms/aps/system/services/resource/ResourceDAO.java b/cms-plugin/src/main/java/com/agiletec/plugins/jacms/aps/system/services/resource/ResourceDAO.java index 00e6d4176..4094dd169 100644 --- a/cms-plugin/src/main/java/com/agiletec/plugins/jacms/aps/system/services/resource/ResourceDAO.java +++ b/cms-plugin/src/main/java/com/agiletec/plugins/jacms/aps/system/services/resource/ResourceDAO.java @@ -382,6 +382,8 @@ private String createQueryString(FieldSearchFilter[] filters, List categ if (!isCount) { super.appendOrderQueryBlocks(filters, query, false); this.appendLimitQueryBlock(filters, query); + } else { + this.closeMasterCountQueryBlock(query); } return query.toString(); } diff --git a/contentworkflow-plugin/src/main/java/com/agiletec/plugins/jpcontentworkflow/aps/system/services/content/ContentSearcherDAO.java b/contentworkflow-plugin/src/main/java/com/agiletec/plugins/jpcontentworkflow/aps/system/services/content/ContentSearcherDAO.java index 077e2f3ba..ef0177585 100644 --- a/contentworkflow-plugin/src/main/java/com/agiletec/plugins/jpcontentworkflow/aps/system/services/content/ContentSearcherDAO.java +++ b/contentworkflow-plugin/src/main/java/com/agiletec/plugins/jpcontentworkflow/aps/system/services/content/ContentSearcherDAO.java @@ -174,7 +174,9 @@ private String createQueryString(List workflowFilters, if (!isCount) { appendOrderQueryBlocks(filters, query, false); this.appendLimitQueryBlock(filters, query); - } + } else { + this.closeMasterCountQueryBlock(query); + } return query.toString(); } diff --git a/engine/src/main/java/com/agiletec/aps/system/common/AbstractSearcherDAO.java b/engine/src/main/java/com/agiletec/aps/system/common/AbstractSearcherDAO.java index 8a192e97b..ec25051ac 100644 --- a/engine/src/main/java/com/agiletec/aps/system/common/AbstractSearcherDAO.java +++ b/engine/src/main/java/com/agiletec/aps/system/common/AbstractSearcherDAO.java @@ -231,6 +231,8 @@ protected String createQueryString(FieldSearchFilter[] filters, boolean isCount, if (!isCount) { boolean ordered = appendOrderQueryBlocks(filters, query, false); this.appendLimitQueryBlock(filters, query); + } else { + this.closeMasterCountQueryBlock(query); } return query.toString(); } @@ -247,11 +249,16 @@ protected StringBuffer createBaseQueryBlock(FieldSearchFilter[] filters, boolean protected StringBuffer createMasterCountQueryBlock() { String masterTableName = this.getMasterTableName(); - StringBuffer query = new StringBuffer("SELECT COUNT(*)"); + StringBuffer query = new StringBuffer("SELECT COUNT(*) FROM ( SELECT DISTINCT "); + query.append(masterTableName).append(".").append(this.getMasterTableIdFieldName()); query.append(" FROM ").append(masterTableName).append(" "); return query; } + protected void closeMasterCountQueryBlock(StringBuffer query) { + query.append(") counter"); + } + private StringBuffer createMasterSelectQueryBlock(FieldSearchFilter[] filters, boolean selectAll) { String masterTableName = this.getMasterTableName(); StringBuffer query = new StringBuffer("SELECT ").append(masterTableName).append("."); diff --git a/engine/src/main/java/com/agiletec/aps/system/common/entity/AbstractEntitySearcherDAO.java b/engine/src/main/java/com/agiletec/aps/system/common/entity/AbstractEntitySearcherDAO.java index cbb25efb0..c698f299a 100644 --- a/engine/src/main/java/com/agiletec/aps/system/common/entity/AbstractEntitySearcherDAO.java +++ b/engine/src/main/java/com/agiletec/aps/system/common/entity/AbstractEntitySearcherDAO.java @@ -219,6 +219,8 @@ protected String createQueryString(EntitySearchFilter[] filters, boolean isCount if (!isCount) { boolean ordered = this.appendOrderQueryBlocks(filters, query, false); this.appendLimitQueryBlock(filters, query); + } else { + this.closeMasterCountQueryBlock(query); } return query.toString(); }