gpt4 book ai didi

java - 如何创建 HQL 查询以返回多对多关系中的对象?

转载 作者:行者123 更新时间:2023-12-01 16:06:23 25 4
gpt4 key购买 nike

我有一个应用程序,其中包括 2 个类别的俱乐部和文章。这些在 Hibernate 中被映射为多对多关系。

因此,hibernate 创建了一个名为 CLUB_ARTICLE 的表,用于管理多对多关系。 CLUB 和 ARTILCE 表彼此没有直接引用,映射仅在 CLUB_ARTICLE 表中表示。

我需要创建一个 HQL 查询,返回特定俱乐部的文章列表。因此,我需要提供俱乐部 ID 并获取属于该俱乐部的 Article 对象列表。出于某种原因,我就是不知道如何做到这一点。任何帮助将非常感激!

谢谢。

最佳答案

代码中ClubArticle之间的关系是什么?当您考虑 HQL 时,您需要忘记数据库模式。只有在hibernate映射(注解或xml)中定义的关系才能在hql中使用。

假设您的映射是双向的,并且您有一个名为 Clubs in Article 的 Club 集合,您可以执行以下操作:

String hql = "from Article where clubs = :club";

然后在查询中设置您的俱乐部实体:

Query q = sess.createQuery(hql);
q.setEntity("club", club);

现在,如果 Article 没有 Club 的集合(列表/集合),事情就会变得更加复杂。您可以从 Club 中进行选择,并对文章 ID 进行投影,然后获取它们。不过,我建议您只需向 Article 实体添加一个集合属性,因为它不会影响数据库架构并且可以简化查询。

关于java - 如何创建 HQL 查询以返回多对多关系中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485837/

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