views:

717

answers:

4

hello good people So far i've been working with only a case with 2 properties with and as logical operator so i use LogicalExpression like so

Criterion eqRef = Restrictions.eq("referenceID", referenceId);
Criterion eqType = Restrictions.eq("verificationType", type);
LogicalExpression and = Restrictions.and(eqRef, eqType);

this time along its more than 2 so i'm a bit confused.say this time i've added username property i can do the normal chaining with

session.createCriteria(this.getPersistentClass())
.add(Restrictions.eq("referenceID", referenceId))
.add(Restrictions.eq("verificationType", type))
.add(Restrictions.eq("username", username))
.list();

but now i don't know which kind of logical operator used between them.i'm also tempted to do this:

Criterion eqRef = Restrictions.eq("referenceID", referenceId);
Criterion eqType = Restrictions.eq("verificationType", type);
Criterion equsername = Restrictions.eq("username", username);
LogicalExpression and = Restrictions.and(eqRef, eqType);
LogicalExpression secondand = Restrictions.and(and, equsername);

i've see the eqAll too but i've never used it before.So do you have any idea about that?How do you do it, and thanks for reading this.

+2  A: 

Since you're "AND"-ing all of your restrictions the grouping is irrelevant, so you can just continue on as in your second example, as there's nothing to be gained by subgrouping them, e.g.

.add(Restrictions.eq("referenceID", referenceId)).add(Restrictions.eq("verificationType", type)).add(Restrictions.eq("username", username))...

You do run into this problem where you need to group mixed "AND" and "OR" queries, if you want to group multiple "OR" values you can also add Criteria to a Disjunction

Steve B.
thanks dude.Really appreciated it
black sensei
A: 

Adding these restrictions individually creates a relation of 'AND' between them. This is good enough for what you need.

Yuval
thanks for your time
black sensei
A: 

but now i don't know which kind of logical operator used between them.

Good answers already, but as an aside you can use the property hibernate.show_sql, set it to true, and you'll be able to see exactly what sql your criteria is producing.

lucas
ok man thanks for readking
black sensei
A: 

Working with hibernate multiple Criteria with logical OR

pls help me!

sokhanh03
Sokhanh03 can you please elaborate on your issue?
black sensei