java - QueryDSL: convert list of BooleanExpression to Predicate -
i'm trying create query depend on number of boolean parameters. function creates predicate looks this:
predicate createpredicate(boolean param1, boolean param2) { list<booleanexpression> booleanexpressions = new list<>(); if (param1) booleanexpressions.add(/** expression 1 **/); if (param2) booleanexpressions.add(/** expression 2 **/); convertexpressionstopredicate(booleanexpressions); } the problem convertexpressionstopredicate function. there special method in querydsl join list of expressions 1 predicate using or operator?
the solution i'm looking should convert this:
list<booleanexpression> booleanexpressions = list(exp1, exp2, exp3); into:
predicate p = exp1.or(exp2).or(exp3)
to construct complex boolean expressions, use com.querydsl.core.booleanbuilder class. implements predicate , can used in cascaded form. example:
public list<customer> getcustomer(string... names) { qcustomer customer = qcustomer.customer; jpaquery<customer> query = queryfactory.selectfrom(customer); booleanbuilder builder = new booleanbuilder(); (string name : names) { builder.or(customer.name.eq(name)); } query.where(builder); return query.fetch(); } booleanbuilder mutable , represents null. after each and or or call represents result of operation.
Comments
Post a Comment