如何使用hibernate中的条件编写带子句

时间:2016-04-27 17:06:08

标签: java database hibernate

我有一个查询,其中我使用WITH子句来生成结果。

 WITH employee AS (SELECT * FROM Employees)
 SELECT * FROM employee WHERE ID < 20
 UNION ALL
 SELECT * FROM employee WHERE Sex = 'M'

请问任何一个让我知道如何使用条件在hibernate中编写此查询,特别是当查询中存在with子句时。

1 个答案:

答案 0 :(得分:0)

首先,你的SQL过于复杂。以下是查询在纯SQL中的外观:

SELECT * FROM Employees WHERE ID < 20 or Sex = 'M'

接下来,假设你有一个Hibernate实体(现在我们称之为Employee.java),你的HQL等价物将是:

from Employee e where e.id < 20 or e.sex = 'M'

要使用Criteria执行此操作,您需要执行以下操作:

final Criteria criteria = getSession().createCriteria(Employee.class);
criteria.add(Restrictions.or(
        Restrictions.lt("id", 20),
        Restrictions.eq("sex", "M")
    )
);
criteria.list();