将列表传递给 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>ArrayString 形式的列表传递给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 子句?的主要内容,如果未能解决你的问题,请参考以下文章

JPA将列表传递给命名本机查询中的IN子句

如何将字符串数组动态传递给Java中的SQL“IN”子句? [复制]

将值列表从 Python 传递到 SQL 查询的 IN 子句

如何在 Django 中为“in”SQL 子句传递值列表

Netezza 中可以传递 IN 子句的最大参数

SQL Server (2008) 将 ArrayList 或字符串传递给 SP 用于 IN()