How to achieve block in IN operation in ( (p1,p2,p3) , (p11,p22,p33))

19 views
Skip to first unread message

sasikanth dale

unread,
Sep 27, 2016, 5:45:28 PM9/27/16
to Querydsl
I'm trying to convert sql to query dsl query.

where (id,name,age) in (
(id,name,age),
(id,name,age),
(id,name,age)
)

i used BooleanBuilder :
BooleanBuilder builder = new BooleanBuilder();
for (){
bilder.and(
id.eq(id).and(name.eq(name)).and(age.eq(age)) 
)
query.where(builder);
}

query looks like : (id=id and name =name and age =age) and (id=id and name =name and age =age) and 
in the palce of and i'm trying to use or operator.

Thanks

sasikanth dale

unread,
Sep 27, 2016, 6:22:39 PM9/27/16
to Querydsl
small modification :

for (){
BooleanBuilder builder = new BooleanBuilder(id.eq(id).and(name.eq(name)).and(age.eq(age)));
query.where(builder);
}

Can any one suggest me a way to solve this issue please.

sasikanth dale

unread,
Sep 27, 2016, 6:57:02 PM9/27/16
to Querydsl
solved in a tricky way. dont no if this is the right answer .
in the loop 

BooleanBuilder builder = new BooleanBuilder();
if(priceInputs.size()>1){
for(int i=0;i<nputs.size();i++){
if(i==0){
builder.and(id.eq(input.get(i).getId()).and(name.eq(input.get(i).getName())).and(age.eq(input.get(i).getAge())));
        }else {
BooleanBuilder fallowingBuiler = new BooleanBuilder(id.eq(input.get(i).getId()).and(name.eq(input.get(i).getName())).and(age.eq(input.get(i).getAge())));
           builder =  builder.or(fallowingBuiler);
}

}
}else {
builder = new BooleanBuilder(id.eq(input.get(i).getId()).and(name.eq(input.get(i).getName())).and(age.eq(input.get(i).getAge())));
}
query.where(builder);

is there any a right way of doing this?

On Tuesday, 27 September 2016 15:45:28 UTC-6, sasikanth dale wrote:
Reply all
Reply to author
Forward
0 new messages