为什么Hibernate会在父级更新时执行多个查询来更新子级?

时间:2013-04-08 16:12:34

标签: java spring hibernate

我与inverse="false"cascade="all"建立了多对一的关系。当我更新父对象时,会有一个针对此父对象的更新查询和多个更新查询 - 一个用于子集合中的每个子对象。

你能告诉我为什么孩子们有这些疑问吗?我怎么能避免它们?

2 个答案:

答案 0 :(得分:1)

如果你有cascade ="所有"这意味着父实体上的每个操作都将对子实体调用相同的操作。因此,如果您不想对关联的子实体进行级联操作,则必须删除cascade = all。

但是你应该小心这个配置,因为如果你没有级联持久化(例如)创建的子实体即使是经常创建也不会被持久化,但你必须明确地为每个孩子调用save实体。

您可以阅读有关级联类型on this thread.

的更多信息

答案 1 :(得分:0)

您希望阻止Hibernate更新应更改级联类型的子实体,请删除cascade=all