Java 使用Hibernate时的多个where条件
我想在hibernate中使用下面的查询Java 使用Hibernate时的多个where条件,java,hibernate,Java,Hibernate,我想在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); 显然给出了错误的结果。试着这样格式化它 SELECT
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);
显然给出了错误的结果。试着这样格式化它
SELECT
FROM
WHERE
AND
而不是你怎么做,这样你就可以说
SELECT name, age
FROM Employee
WHERE name='xxxx' AND age='30' OR (name = 'yyyy' OR age = 40);
好问题!有一个简单的解决方案:
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();
带有字段连接的查询对于大表来说不是最优的,您需要在此表上创建函数索引,或者使用连接的结果创建服务字段,并对其进行索引。您可以这样编写
Select emp from Employee emp where emp.name in ('XXXX','YYYYY') and emp.age in (30,40)
如果值为2,则可以。如果我在运行时得到1000个值,我如何格式化?