我想翻译像这样的查询:
FROM Entity_1 obj
WHERE obj IN (FROM Entity2) OR
obj IN (FROM Entity3)
要暂停条件表单,官方documentation of Hibernate是不够的,因为它没有说明如何应用IN
语句。
任何提示?
答案 0 :(得分:9)
条件API没有规定添加另一个查询作为限制..我认为@Niroshan Abayakoon试图说的是你需要分别执行IN
条款的查询&将结果添加到Restrictions.in()
条件。
List<?> entity2Data=//get data from either a query or criteria
List<?> entity3Data=//get data from either a query or criteria
Criteria c = // obtain criteria from session
// basically creates an OR condition chain
Disjunction orConditions = Restrctions.disjunction();
orConditions.add(Restrictions.in("obj", entity2Data));
orConditions.add(Restrictions.in("obj", entity3Data));
c.add(orConditions);
这会让hibernate考虑IN
子句中的列表。
在这种情况下,最好还是回到HQL。