2

Hibernateを使用していますが、条件を含むまたは条件のような条件に基づいてレコードを取得したいと思います。こんな感じです

from Employee where empno in(empname from Employee where empname like'A%' or'B%' or'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 に答える