【问题标题】:passing list to IN clause in HQL or SQL?将列表传递给 HQL 或 SQL 中的 IN 子句?
【发布时间】:2012-09-21 02:26:27
【问题描述】:

我通过执行查询得到List<Strings>。这必须传递给 IN 子句值的另一个查询。如何在 HQL 中传递它们?

我们可以将List 转换为Array 并且可以通过,这不是问题。

最后,我必须将List<String>ArrayString 形式的列表传递给IN 子句。

【问题讨论】:

    标签: java hibernate hql in-clause


    【解决方案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 中一样?
    • 终于有所收获
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 2017-06-26
    相关资源
    最近更新 更多