我目前有一个名为 Section
的 MySQL 表,Section
中的每个条目在 News
表中都有一堆行。在每个 News
条目中,Comments
表中有一堆行。
News
和 Section
之间是多对一
关系,之间也是类似的
和多对一
关系>评论新闻
。这是来自 child 的单向关系。
这可能非常简单,但我是 HQL 新手,如何查询特定 Section
的所有 Comments
?它是一堆递归选择的连接吗?
抱歉,我不知道这叫什么。是级联的吗?
最佳答案
级联
的概念是更新/插入/删除一组相关实体,查询与JPA/Hibernate中的级联
无关
在您的情况下,您可以使用fetch join
发出单个 JOIN SQL 来获取给定父级的所有子级。
fetch join
和 normal join
之间的区别在于,fetch join
还会导致所有子对象与其父对象一起初始化一次选择,这样您就可以在循环遍历父级的子级时避免潜在的 N+1 问题。
您可以使用类似于以下语法的方式发出fetch join
:
from Section as section
left join fetch section.news as new
left join fetch new.comments
关于mysql - 如何让所有孙子处于一对多关系 HQL 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18886345/