From f6c7883e5f6328f7fb78b156d55888264f8d41d8 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 26 Feb 2023 15:56:47 +0100 Subject: [PATCH] #728 - fixed transactions specifications for tags --- .../transactions/TransactionSpecifications.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java index 76f7b85a8..b6f443ace 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionSpecifications.java @@ -10,6 +10,7 @@ import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.Join; import jakarta.persistence.criteria.JoinType; import jakarta.persistence.criteria.Predicate; + import java.time.LocalDate; import java.util.ArrayList; import java.util.List; @@ -102,17 +103,21 @@ public class TransactionSpecifications if(!tagIDs.isEmpty()) { Join<Transaction, Tag> join = transaction.join(Transaction_.tags, JoinType.LEFT); - Predicate tagPredicate = builder.disjunction(); + final List<Predicate> tagPredicates = new ArrayList<>(); + for(Integer tagID : tagIDs) { - tagPredicate.getExpressions().add(builder.equal(join.get(Tag_.ID), tagID)); + tagPredicates.add(builder.equal(join.get(Tag_.ID), tagID)); } // transactions without any tags should be included in results - tagPredicate.getExpressions().add(builder.isEmpty(transaction.get(Transaction_.tags))); + tagPredicates.add(builder.isEmpty(transaction.get(Transaction_.tags))); + + final Predicate[] predicatesArray = new Predicate[tagPredicates.size()]; + final Predicate tagPredicatesCombined = builder.or(tagPredicates.toArray(predicatesArray)); - predicates.add(tagPredicate); - transferPredicates.add(tagPredicate); + predicates.add(tagPredicatesCombined); + transferPredicates.add(tagPredicatesCombined); } if(name != null && name.length() > 0) -- GitLab