2

我正在使用 Hibernate,我想根据包含或条件的类似条件获取记录。是这样的,

from empno in 员工(从员工中选择 empno,其中 empname 像 'A%' 或 'B%' 或 'C%' )"

这是对的吗?建议我强大的查询..

4

4 回答 4

5

不需要子查询:

from Employee where empname like 'A%' or empname like 'B%' or empname like 'C%'
于 2013-02-26T11:04:18.823 回答
0

您必须为 where 子句中的每个条件创建一个 like 语句。HQL 将允许您执行 in/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%')
于 2013-02-26T10:46:25.197 回答
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%' )
于 2013-02-26T10:49:05.447 回答
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;
}
于 2021-05-04T09:02:09.843 回答