我想在hibernate中使用以下查询。
Select * from Employee where (Name= 'XXXX' and age = 30) OR (Name = 'YYYY' or age = 40);
我可能会在运行时获得多个名字和年龄。这是不确定的。
我尝试过以下操作:
Select * from Employee where Name in ('XXXX','YYYYY') AND age in (30,40);
显然是错误的结果。
答案 0 :(得分:0)
尝试像这样格式化。
SELECT
FROM
WHERE
AND
而不是你如何做,以便你可以说
SELECT name, age
FROM Employee
WHERE name='xxxx' AND age='30' OR (name = 'yyyy' OR age = 40);
答案 1 :(得分:0)
好问题!有一个简单的解决方案:
String hql = "from AEmployee where Name||age in (:ids)";
List<Employee>list=entityManager.createQuery(hql).setParameter("ids",
new LinkedList<String>() {
{
add("XXXX30");
add("YYYY40");
}
}).getResultList();
具有字段连接的查询对于大表不是最佳的,您需要在该表上创建功能索引,或者创建具有连接结果的服务字段,并将其编入索引。
答案 2 :(得分:0)
Select emp from Employee emp where emp.name in ('XXXX','YYYYY') and emp.age in (30,40)