当前位置: 首页 > 知识库问答 >
问题:

当使用级联删除时,如何处理Hibernate中的可选关系?

公孙琛
2023-03-14

很抱歉,如果这是显而易见的,但我们已经为这件事挠头好几天了。

考虑三个实体,Parent、Child和x:

X与Child有@ManyToOne关系,可选=true。

当我们删除一个父级时,理想情况是这样的。我们希望delete级联并移除与已删除父行相对应的所有子行。目前还没问题。但我们也希望引用任何已删除子项的任何X将子项关系清空。我们不想删除任何X,我们只想将关系空掉。这与它是一种“可选的”关系是一致的。

在冬眠状态下我们如何做到这一点?理想情况下,我们希望它是声明性的,这样我们的业务逻辑就不必“记住”来消除这些关系。事实上,如果我们要使用级联,它实际上必须是声明性的,因为在我们遇到一个可选的关系被取消之前,可能会有许多级联。

有什么提示吗?我们被难住了...

共有1个答案

吕自明
2023-03-14

使用inverse=false将集合映射到子类中的X。

 类似资料:
  • 我试图通过联接表的一个外键级联删除联接表中的行,它有另一个与之相关的表,我也想删除与此ID相关的所有行。看起来像下图。当我使用会话时。使用hibernate删除(reqCandObject)它工作正常,并通过从候选jobReq表中删除一个条目以及相关注释进行级联。但是,我想删除所有具有特定候选ID的候选项(并删除注释)。我尝试了下面的函数,但与nice hibernate不同。删除(对象)函数,此

  • 问题内容: 我试图做一个简单的例子,以学习如何从父表中删除一行并使用Doctrine2自动删除子表中的匹配行。 这是我正在使用的两个实体: Child.php: 父亲.php 这些表已在数据库上正确创建,但未创建“删除级联”选项。我究竟做错了什么? 问题答案: 在教义中有两种级联: 1)ORM级别- 在关联中使用- 这是在UnitOfWork中完成的计算,不影响数据库结构。删除对象时,UnitOf

  • 问题内容: 我对级联=“删除”的工作方式感到困惑。我在“城市”映射文件中以以下方式定义了映射: 类客户具有类城市的外键。 因此,当我运行时: 是否还应该删除所有客户端,还是必须以某种方式处理它?我是否将查询作为方法参数正确传递给会话的delete()方法?谢谢你的帮助。最好的问候,混蛋。 问题答案: 我对cascade =“ delete”的工作方式有些困惑(…) 级联操作意味着,如果您是父母,则

  • 问题内容: 我有一个组件数据库。每个组件都是特定的类型。这意味着组件和类型之间存在多对一的关系。删除类型时,我想删除所有具有该类型外键的组件。但是,如果我没记错的话,级联删除将在删除组件时删除类型。有什么办法可以做我所描述的吗? 问题答案: 这就是您要包含在组件表中的内容。 请记住,您需要使用InnoDB存储引擎:默认的MyISAM存储引擎不支持外键。

  • 我正在尝试删除与表中一行相关联的行,而不删除主行(因此不能使用级联)。 这是一个原始的PostgreSQL查询,它实现了我想用SQL实现的功能。sequelize是否能够生成这样查询: 模型是(不包括不相关的列): 关联在SEQELIZE中定义为: 查询的另一个版本可以是: 但我认为sequelize还不能处理子查询? 我尝试了一些类似的方法: 然而,后遗症抱怨道: 错误:Model.Destro

  • 问题内容: 我在我的数据库3个表:,和 学生可以有多个课程,课程可以有多个学生。和之间存在多对多关系。 我为我的项目和课程添加了3个案例。 (a)当我添加用户时,它会保存得很好, (b)当我为学生添加课程时,它会在-预期行为中创建新的行。 (三)当我试图删除学生,则在删除适当的记录和,但它也删除其中不需要的记录。即使课程中没有任何用户,我也希望课程在那里。 下面是我的表和注释类的代码。 这是Hib