Hibernate Criteria等效于子查询中的IN子句?

Mr.*_*art 2 java hibernate ejb jpa java-ee

我想翻译像这样的查询:

FROM Entity_1 obj
WHERE obj IN (FROM Entity2) OR 
      obj IN (FROM Entity3)
Run Code Online (Sandbox Code Playgroud)

要休眠Criteria表单,而Hibernate的官方文档是不够的,因为它没有说明如何应用该IN语句.

任何提示?

Ana*_*rma 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); 
Run Code Online (Sandbox Code Playgroud)

这会让hibernate考虑IN子句中的列表.

在这种情况下,最好还是回退到HQL.