Java 使用Hibernate时的多个where条件

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

我想在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
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个值,我如何格式化?