Java 将列表传递给HQL或SQL中的IN子句?
我通过执行查询获得Java 将列表传递给HQL或SQL中的IN子句?,java,hibernate,hql,in-clause,Java,Hibernate,Hql,In Clause,我通过执行查询获得列表。这必须传递给子句值中的另一个查询。如何在HQL中传递它们 我们可以将列表转换为数组,并可以传递它,这不是问题 最后,我必须将list或Array或String表单中的列表传递给in子句 from AUTOS a where a.model in (select m.model from MODELS m) 或 queryquery1=session.createQuery(“从Salary s中选择s.id,其中s.Salary49980”); Query query
列表
。这必须传递给子句值中的另一个查询。如何在HQL中传递它们
我们可以将列表
转换为数组
,并可以传递它,这不是问题
最后,我必须将list
或Array
或String
表单中的列表传递给in子句
from AUTOS a where a.model in (select m.model from MODELS m)
或
queryquery1=session.createQuery(“从Salary s中选择s.id,其中s.Salary<50000和s.Salary>49980”);
Query query2=session.createQuery(“来自雇员e,其中e.id位于(:id)”).setParameterList(“id”,query1.list());
query2.list();
我知道已经有一段时间了,您一直在尝试将不同查询的值作为queryParameter传递,您也可以使用'elements()'将集合或集合传递给HQL中的in子句-下面是一个简单的使用示例:
这也会起到同样的作用。。即使很晚了,也谢谢你的回复。。对其他人很有帮助。这是一个很好的答案,但是对于空集合不起作用。可以用一个查询来完成吗?就像sql中的子查询一样?终于得到了一些东西
Query query1 = session.createQuery("select s.id from Salary s where s.salary < 50000 AND s.salary > 49980");
Query query2 = session.createQuery("from Employee e where e.id in (:ids)").setParameterList("ids", query1.list());
query2.list();