2012-01-17 138 views
2

我有一个休眠类:或标准 - 休眠

class student{ 
string name; 
int roll; 
} 

而获取的记录,我有一个要求,我需要取其中name =“约翰”或Name =“保罗”,所以基本上我记录试图记录名称为约翰或保罗的所有记录。我无法做到这一点。请指导。

List students = sess.createCriteria(student.class) 
    .add(Restrictions.eq("name", "John")) 
    .add(Restrictions.eq("name", "Paul"))) 
    .list(); 

这是非工作代码。

回答

4

尝试:

List students = sess.createCriteria(student.class) 
    .add(Restrictions.in("name", new String[] { "John", "Paul" })) 
    .list(); 

PS。我建议你使用QueryDSL而不是Criteria API。

+0

感谢彼得说做到了......现在检查querydsl – Will 2012-01-19 03:58:16

+1

检查[QueryDSL VS标准API(http://blog.mysema.com/2010/04/querydsl-作为-替代到JP-A-2.HTML) – 2012-01-19 11:06:55

1

事情是这样的:

Criteria crit = session.createCriteria(Student.class); 
Criterion name = Restrictions.eq("name", "John") ; 
Criterion name2 = Restrictions.eq("name", "Paul")); 
LogicalExpression orExp = Restrictions.or(name,name2); 
crit.add(orExp); 
List<Student> results = crit.list();