Skip to content
Snippets Groups Projects
Commit f6c7883e authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#728 - fixed transactions specifications for tags

parent c534b8d6
No related branches found
No related tags found
No related merge requests found
...@@ -10,6 +10,7 @@ import jakarta.persistence.criteria.CriteriaBuilder; ...@@ -10,6 +10,7 @@ import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.Join; import jakarta.persistence.criteria.Join;
import jakarta.persistence.criteria.JoinType; import jakarta.persistence.criteria.JoinType;
import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Predicate;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -102,17 +103,21 @@ public class TransactionSpecifications ...@@ -102,17 +103,21 @@ public class TransactionSpecifications
if(!tagIDs.isEmpty()) if(!tagIDs.isEmpty())
{ {
Join<Transaction, Tag> join = transaction.join(Transaction_.tags, JoinType.LEFT); Join<Transaction, Tag> join = transaction.join(Transaction_.tags, JoinType.LEFT);
Predicate tagPredicate = builder.disjunction(); final List<Predicate> tagPredicates = new ArrayList<>();
for(Integer tagID : tagIDs) 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 // 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); predicates.add(tagPredicatesCombined);
transferPredicates.add(tagPredicate); transferPredicates.add(tagPredicatesCombined);
} }
if(name != null && name.length() > 0) if(name != null && name.length() > 0)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment