JPA2 Criteria - 选择具有指定值的另一个元素的集合的元素

时间:2014-01-08 18:19:17

标签: hibernate jpa criteria

有两个类A和B.A类中有一组B类对象。 B类有一个字段X.我希望能够返回A类对象的列表,这些对象在其集合中具有类型B的对象,它们具有属性X的某些特定值。它甚至可能吗?

到目前为止,我尝试过类似的事情:

Root<A> root = criteriaQuery.from(A.class);
criteriaQuery.select(root);
criteriaQuery.where(root.get("bCollection").get("x").in("value"))

但当然不起作用。怎么办呢? B类映射为嵌套组件,如下所示:

<set name="bCollection" table="bCollection">
            <key column="a_id" />
            <composite-element
                class="example.B">
                <many-to-one name="x" column="b_id" not-null="false"
                    cascade="none" foreign-key="b_fk" />
            </composite-element>
</set>

我希望有人知道......谢谢!

1 个答案:

答案 0 :(得分:1)

当然有可能:

  1. 创建根A(就像你一样)。
  2. 将B加入A,获得Join B
  3. 使用获得的Join B
  4. 添加where条件

    有关IN子句的示例,请google或查看this answer