Java 或标准-休眠

Java 或标准-休眠,java,hibernate,Java,Hibernate,我有一个hibernate类: class student{ string name; int roll; } 在获取记录时,我有一个要求,需要在name=“john”或name=“paul”的位置获取记录,因此基本上,我试图获取所有名为john或paul的记录。我不能这样做。请导游 List students = sess.createCriteria(student.class) .add( Restrictions.eq("name", "John") ) .add( R

我有一个hibernate类:

class student{
string name;
int roll;
}
在获取记录时,我有一个要求,需要在name=“john”或name=“paul”的位置获取记录,因此基本上,我试图获取所有名为john或paul的记录。我不能这样做。请导游

List students = sess.createCriteria(student.class)
    .add( Restrictions.eq("name", "John") )
    .add( Restrictions.eq("name", "Paul")) )
    .list();
这是无效代码。

请尝试:

List students = sess.createCriteria(student.class)
   .add( Restrictions.in("name", new String[] { "John", "Paul" } ) )
   .list();
另外,我建议您使用QueryDSL而不是Criteria API。

类似于以下内容:

 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();
Criteria crit=session.createCriteria(Student.class);
标准名称=限制。eq(“名称”、“约翰”);
标准名称2=限制.eq(“名称”、“保罗”);
LogicalPression orExp=限制。或(名称,名称2);
标准添加(orExp);
列表结果=crit.List();
检查