IN使用Hibernate的条件有多个

时间:2015-03-04 04:07:00

标签: 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);

显然是错误的结果。

3 个答案:

答案 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)