【问题标题】:JPA2 Criteria - select element which has a collection with another element with specified valueJPA2 Criteria - 选择具有与另一个具有指定值的元素的集合的元素
【发布时间】:2014-01-27 00:25:55
【问题描述】:

有两个类 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>

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

【问题讨论】:

    标签: hibernate jpa criteria


    【解决方案1】:

    当然可以:

    1. 创建根 A(与您一样)。
    2. 将根 A 与 B 连接,得到 Join B
    3. 使用获得的Join B添加where条件。

    IN子句的例子,google或查this answer

    【讨论】:

    • 好的:)!但是,如果 B 类型的对象集合不是直接在 A 中,而是在 A 类中的某个 C 类中,该怎么做呢?此类 C 被映射为组件,因此它不会添加到层次结构中...
    猜你喜欢
    • 1970-01-01
    • 2023-03-04
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多