mysql - 如何让所有孙子处于一对多关系 HQL 中?

标签 mysql database hibernate one-to-many cascade

我目前有一个名为 Section 的 MySQL 表,Section 中的每个条目在 News 表中都有一堆行。在每个 News 条目中,Comments 表中有一堆行。

NewsSection 之间是多对一关系,之间也是类似的多对一关系>评论新闻。这是来自 child 的单向关系。

这可能非常简单,但我是 HQL 新手,如何查询特定 Section 的所有 Comments ?它是一堆递归选择的连接吗?

抱歉,我不知道这叫什么。是级联的吗?

最佳答案

级联的概念是更新/插入/删除一组相关实体,查询与JPA/Hibernate中的级联无关

在您的情况下,您可以使用fetch join 发出单个 JOIN SQL 来获取给定父级的所有子级。

fetch joinnormal 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/

相关文章:

php - 运行 PHP 脚本时显示加载符号

java - 如何访问源自数据库的 ArrayList 内的 HashMap ?

database - 什么时候需要提供CA文件?

java - Hibernate 父/子关系。为什么对象被保存两次?

Hibernate 标准组属性

用于匹配字符串中数字列表的 MySQL 正则表达式

mysql - 插入时需要 mysql 事件的最佳解决方案解决方法?

mysql - 如何在没有 ON 条件的情况下使用 mysql JOIN?

mysql - 使用 MySQL 和 PHP 将数据分离到两个不同的数据库表中

java - C3P0 创建过多的线程和定时器