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