cometta
cometta

Reputation: 35729

iterate array to create hibernate criteria statement

let say my array has 3 integer object value= 3,4,5 i would need to create hibernate criteria that look like below

criteria.add(Restrictions.and(Restrictions.not(Restrictions.eq(
        "stepId", new Integer(3))), Restrictions.and(Restrictions
        .not(Restrictions.eq("stepId", new Integer(4))), Restrictions
        .not(Restrictions.eq("stepId", new Integer(5))))));

the above criteria is created manually, i wonder can automate this through iteration

for(Iterator iterator = integerArray.iterator; iterator.hasNext()){
    // create the criteria above
}

Upvotes: 4

Views: 6732

Answers (2)

o.k.w
o.k.w

Reputation: 25820

Yes, you can use Disjunction in your loop:

Disjunction disjunction = Restrictions.disjunction();
for(Iterator iterator = integerArray.iterator; iterator.hasNext()){
    disjunction.add(yourRestriction); //add your restirction here
}
criteria.add(disjunction );

Upvotes: 11

Chandra Patni
Chandra Patni

Reputation: 17587

You can use in restriction while takes Array argument.

  Integer[] integerArray = ...
  criteria.add(Restrictions.and(Restrictions.not(
        Restrictions.in("stepId", integerArray)
  );

Upvotes: 7

Related Questions