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;
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)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment