我有一个查询,其中我使用WITH子句来生成结果。
WITH employee AS (SELECT * FROM Employees)
SELECT * FROM employee WHERE ID < 20
UNION ALL
SELECT * FROM employee WHERE Sex = 'M'
请问任何一个让我知道如何使用条件在hibernate中编写此查询,特别是当查询中存在with子句时。
答案 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();