在将条件查询与休眠一起使用时,如何将“OR”条件放在一起?

2022-08-31 12:40:19

我正在尝试使用休眠条件查询对三个字段执行基本的“OR”。

class Whatever{
 string name;
 string address;
 string phoneNumber;
}

我想构建一个条件查询,其中我的搜索字符串可以与“名称”或“地址”或“电话号码”匹配。


答案 1

您想使用 .这样Restrictions.disjuntion()

session.createCriteria(Whatever.class)
    .add(Restrictions.disjunction()
        .add(Restrictions.eq("name", queryString))
        .add(Restrictions.eq("address", queryString))
        .add(Restrictions.eq("phoneNumber", queryString))
    );

请参阅此处的休眠文档。


答案 2

假设您手头有一个休眠会话,那么类似下面的内容应该可以工作:

Criteria c = session.createCriteria(Whatever.class);
Disjunction or = Restrictions.disjunction();
or.add(Restrictions.eq("name",searchString));
or.add(Restrictions.eq("address",searchString));
or.add(Restrictions.eq("phoneNumber",searchString));
c.add(or);

推荐