我正在使用Hibernate,我想根据包含或条件的类似条件获取记录。就像这样,
来自Employee的来自empno(从员工中选择empno,其中empname如'A%'或'B%'或'C%')“
这是对的吗?建议我强大的查询..
答案 0 :(得分:4)
不需要子查询:
from Employee where empname like 'A%' or empname like 'B%' or empname like 'C%'
答案 1 :(得分:0)
您必须为where子句中的每个条件创建一个like语句。 HQL将允许您执行/ like比较和子选择。
from Employee emp where emp.empno in
(select emp2.empno from Employee emp2 where emp2.empname like 'A%'
or emp2.empname like 'B%' or emp2.empname like 'C%')
答案 2 :(得分:0)
from Employee e
where e.empno in ( select ee.empno from Employee ee
where ee.empname like 'A%'
or ee.empname like 'B%'
or ee.empname like 'C%' )
答案 3 :(得分:0)
如果您想要更高的安全性并防止 sql 注入,您可以使用带有 setParameter 和通配符的 createQuery,如下所示:
@Override
public List<Employee> searchEmployee(String searchName) {
Session currentSession = sessionFactory.getCurrentSession();
Query<Employee> searchQuery = currentSession.createQuery(
"from Employee where lower(empname ) like :theName or lower(empLlastName) like :theName", Employee.class);
searchQuery.setParameter("theName", "%" + searchName.toLowerCase() + "%");
List<Employee> employees = searchQuery.getResultList();
return employees;
}