From 96af3976bfc69fb23b7c7ed2cce0aed0f13db36c Mon Sep 17 00:00:00 2001 From: Matthias Ronge Date: Tue, 26 Nov 2024 17:33:24 +0100 Subject: [PATCH] Do not sort query for any object --- .../production/services/data/BeanQuery.java | 15 ++++++++++++++- .../production/services/data/ProcessService.java | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Kitodo/src/main/java/org/kitodo/production/services/data/BeanQuery.java b/Kitodo/src/main/java/org/kitodo/production/services/data/BeanQuery.java index 79517f1f739..f103ae81047 100644 --- a/Kitodo/src/main/java/org/kitodo/production/services/data/BeanQuery.java +++ b/Kitodo/src/main/java/org/kitodo/production/services/data/BeanQuery.java @@ -18,6 +18,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Map.Entry; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -328,6 +329,16 @@ public void defineSorting(String sortField, SortOrder sortOrder) { sorting = Pair.of(varName + '.' + sortField, SortOrder.DESCENDING.equals(sortOrder) ? "DESC" : "ASC"); } + /** + * Disables the sort order of the query. This can speed up the check whether + * there is any object for a specific search query. However, you no + * longer have a reliable order when navigating the result list, and should + * therefore only be used in special cases. + */ + public void setUnordered() { + sorting = null; + } + /** * Forms and returns a query to count all objects. * @@ -351,7 +362,9 @@ public String formQueryForAll() { query.append("SELECT ").append(varName).append(' '); } innerFormQuery(query); - query.append(" ORDER BY ").append(sorting.getKey()).append(' ').append(sorting.getValue()); + if (Objects.nonNull(sorting)) { + query.append(" ORDER BY ").append(sorting.getKey()).append(' ').append(sorting.getValue()); + } return query.toString(); } diff --git a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java index b7d399c53f3..78ed63a3553 100644 --- a/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java +++ b/Kitodo/src/main/java/org/kitodo/production/services/data/ProcessService.java @@ -635,6 +635,7 @@ public Collection findByDocket(int docketId) throws DAOException { public Collection findByTemplate(int templateId) throws DAOException { BeanQuery query = new BeanQuery(Process.class); query.addIntegerRestriction("template.id", templateId); + query.setUnordered(); return getByQuery(query.formQueryForAll(), query.getQueryParameters(), 0, 1); }