Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 子查询中IN子句的休眠条件等效?_Java_Hibernate_Jakarta Ee_Jpa_Ejb - Fatal编程技术网

Java 子查询中IN子句的休眠条件等效?

Java 子查询中IN子句的休眠条件等效?,java,hibernate,jakarta-ee,jpa,ejb,Java,Hibernate,Jakarta Ee,Jpa,Ejb,我想翻译这样一个查询: FROM Entity_1 obj WHERE obj IN (FROM Entity2) OR obj IN (FROM Entity3) 要使标准表单休眠,官方是不够的,因为它没有说明如何在语句中应用 有什么提示吗?criteria API没有添加另一个查询作为限制的规定。。我认为@Niroshan Abayakoon试图说的是,您需要分别执行IN子句中的查询,并将结果添加到限制条件中() List<?> entity2Data=//get

我想翻译这样一个查询:

FROM Entity_1 obj
WHERE obj IN (FROM Entity2) OR 
      obj IN (FROM Entity3)
要使标准表单休眠,官方是不够的,因为它没有说明如何在语句中应用


有什么提示吗?

criteria API没有添加另一个查询作为限制的规定。。我认为@Niroshan Abayakoon试图说的是,您需要分别执行
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); 
List entity2Data=//从查询或条件中获取数据
List entity3Data=//从查询或条件中获取数据
条件c=//从会话中获取条件
//基本上创建一个条件或条件链
析取或条件=限制。析取();
或条件。添加(限制。in(“obj”,entity2Data));
或条件。添加(限制。in(“obj”,entity3Data));
c、 添加(或条件);

这将得到Hibernate来考虑子句中的<代码>中的列表。


在这种情况下,最好回退到HQL。

非常感谢。但是我仍然不理解“createCriteria(null)”,为什么要使用null参数?何时查询实体1?为什么第二个条件独立于第一个?我需要在最后得到一份清单。谢谢仍然存在问题,因为
限制。在(String,String)
中,需要一个propertyName作为第一个参数(我假设您试图传递Entity2.class或“Entity”,两者都不起作用)。此处
Entity2和Entity3
被视为包含属性名称的字符串。。我已经更新了我的答案。是的,但如果你看看我最初的HQL查询,就不会有这样的“someProperty”或“anotherProperty”。我无法应用此解决方案来翻译我的查询。。。我弄错了吗?谢谢。不完全是。。。属性名称可以是任何内容。。。我我再次编辑了我的答案。。。也许这就是你要找的。