将列表传递给 HQL 或 SQL 中的 IN 子句?
Posted
技术标签:
【中文标题】将列表传递给 HQL 或 SQL 中的 IN 子句?【英文标题】:passing list to IN clause in HQL or SQL? 【发布时间】:2012-09-21 02:26:27 【问题描述】:我通过执行查询得到List<Strings>
。这必须传递给 IN 子句值的另一个查询。如何在 HQL 中传递它们?
我们可以将List
转换为Array
并且可以通过,这不是问题。
最后,我必须将List<String>
或Array
或String
形式的列表传递给IN 子句。
【问题讨论】:
【参考方案1】:我知道已经有一段时间了,您一直在尝试将不同查询的值作为 queryParameter 传递,您还可以使用 'elements() 将集合或集合传递给 HQL 中的 in 子句' - 这是这种用法的一个简单示例: Hibernate query: does a Set contains a certain Object?
【讨论】:
这会做同样的事情..感谢您的回复,即使它迟到了..对其他人有帮助..【参考方案2】:from AUTOS a where a.model in (select m.model from MODELS m)
或
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();
【讨论】:
这是一个很好的答案,但不适用于空集合。 是否可以通过 1 个查询来完成?像在带有子查询的 sql 中一样? 终于有所收获以上是关于将列表传递给 HQL 或 SQL 中的 IN 子句?的主要内容,如果未能解决你的问题,请参考以下文章
如何将字符串数组动态传递给Java中的SQL“IN”子句? [复制]