【问题标题】:JPA @ManyToOne automatically remove parent when last child is removed当最后一个孩子被移除时,JPA @ManyToOne 会自动移除父母
【发布时间】:2015-04-03 11:17:49
【问题描述】:

@ManyToOne 我有一个从子到父的单向映射,如下所示:

@ManyToOne()
@JoinColumn(name = "PARENT_ID")
private ParentEntity parent;

在没有从 ParentEntity 到 ChildEntities 的引用的情况下删除最后一个孩子时,我可以删除父级吗?我尝试的所有注释似乎都不起作用。

【问题讨论】:

  • @Naman 这不起作用,因为当它不是最后一个孩子时,你会得到一个“外键”异常。

标签: java hibernate jpa


【解决方案1】:

AFAIK jpa 没有方法可以做到这一点。 但是您可以在删除方法中检查服务中子实体的数量,如果是最后一个,则删除父实体。

【讨论】:

    【解决方案2】:

    不,你不能只用注释来做到这一点:hibernate 不知道第一个、第二个或最后一个孩子。要解决任务,您可以编写@PostRemove 拦截器(在 jpa 中,或在休眠中的侦听器),在这种情况下计算“最后一个孩子”,调用实体管理器并删除父级。在实体中做DAO操作并不完美,但如果你真的想要......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多