问题描述
我想知道如何在不同的列中搜索相同的参数。
当我执行“ criteria.add(Restrictions.like(“ firstName”,search +“%”));“” 它有效,但仅适用于单个列。
因此,如何使用条件使用“或”?
Criteria criteria = createEntityCriteria();
if (search != null && !search.equals("")) {
criteria.add(Restrictions.like("firstName || lastName || mobileNo || ssn", search + "%"));
System.out.println("search " + search);
}
return (List<Employee>) criteria.list();
1楼
这样用于析取;
criteria.add(Restrictions.disjunction()
.add(Restrictions.like("firstName", search + "%"))
.add(Restrictions.like("lastName", search + "%"))
.add(Restrictions.like("mobileNo", search + "%"))
.add(Restrictions.like("ssn", search + "%")));
- 析取 ->将一个表达式中的表达式组合在一起(A或B或C ...)
- 结合 ->在单个结合中将表达式分组在一起(A和B与C ...)
2楼
限制有一个or
方法可以接受任意数量的条件,因此您可以执行以下操作:
criteria.add(Restrictions.or(
Restrictions.like("firstName", search + "%"),
Restrictions.like("lastName", search + "%"),
Restrictions.like("mobileNo", search + "%"),
Restrictions.like("ssn", search + "%"))
);