【问题标题】:Converting a HQL-query which includes elements() to Criteria API将包含 elements() 的 HQL 查询转换为 Criteria API
【发布时间】:2010-01-26 12:40:37
【问题描述】:

我在将以下 HQL 查询转换为 Criteria API 时遇到问题,我想知道是否可以从你们那里得到一些帮助

SELECT child FROM Foo AS child WHERE child IN (SELECT elements(obj.foos) FROM Bar AS obj WHERE obj.id = ?)

换句话说,我想获取 Bar 在其 id 等于 ? 的实例中引用的所有 Foos。

编辑:请注意,我在实体之间没有双向关系,因此 Foo 不知道哪些 Bars 引用了它。其次,从 Bar 到 Foo 的引用是 ManyToMany 类型。

【问题讨论】:

    标签: java hibernate criteria criteria-api


    【解决方案1】:

    这些例子不等于你的,但它们是相似的:

    Hibernate Criteria Subquery

    Hibernate Criteria With Property Not In (Subquery)

    您可以使用它们作为示例。

    【讨论】:

      【解决方案2】:

      类似:

      List<Foo> foos = session.createCriteria(Foo.class).createAlias("bar", "bar").add(Restrictions.eq("bar.id", 12345)).list();
      

      对应于:

      class Foo {
         Bar bar;
      }
      
      class Bar {
         long id;
      }
      

      【讨论】:

      • 就像我说的,Foo 没有引用 Bar,只有 Bar 引用了 Foo。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-10
      • 2020-02-02
      • 2013-07-02
      • 2014-06-26
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多