gpt4 book ai didi

java - 集合上的 Hibernate 查询过滤器

转载 作者:行者123 更新时间:2023-11-29 02:06:53 26 4
gpt4 key购买 nike

我想执行以下查询:

from Item i where i.categoryItems.catalogId = :catId

然而,这会产生以下异常:非法尝试取消引用集合所以我用谷歌搜索,找到了这个 Hibernate 论坛帖子 https://forum.hibernate.org/viewtopic.php?p=2349920建议我执行以下操作:

from Item i, IN (i.categoryItems) WHERE i.catalogId = :catId

这种方法可行,但有一个问题:它返回一个包含 Item 对象和 CategoryItem 对象的对象数组。我只对单个 Item 对象(列表)感兴趣

我对“项目”的映射:

<hibernate-mapping package="be.xx.xx.xx.xx.domain" default-access="field">
<class name="Item" table="ITEM">
<id name="articleId" column="article_id" type="long">
<generator class="assigned" />
</id>
...
...
<set name="categoryItems" table="CATEGORY_ITEM">
<key column="item_id" />
<one-to-many class="be.xx.xx.xx.xx.domain.CategoryItem" />
</set>
</class>
</hibernate-mapping>

有人有什么想法吗?

谢谢

最佳答案

尝试:

SELECT i FROM Item i inner join i.categoryItems cat WHERE cat.id = :catID

解释:您尝试过的导航:i.categoryItems.catalogId 仅适用于 1:1 或 n:1 关系,但不适用于 1:n。 -- 对于 1:n,您必须使用显式连接操作。

关于java - 集合上的 Hibernate 查询过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4488512/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com