gpt4 book ai didi

java - Hibernate - 如何使用仅指定单向子关系的注释级联删除

转载 作者:行者123 更新时间:2023-11-29 04:03:08 25 4
gpt4 key购买 nike

假设我有两个实体,一个父对象和一个子对象。我希望 child 具有指定给父实体的关系和引用,但我不希望父实体必须了解它。这样做的原因是存在许多这样的关系,并且明确指定所有这些子对象的关系将意味着不断更新和污染父对象。但是我仍然希望父对象的删除级联到子对象。作为附加约束,子对象仅通过设置引用父实体 ID 的属性来引用父实体集。假设我有类似的东西:

@Entity
class Child {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@Column(nullable=false)
private Long parentId;

@ManyToOne(fetch=FetchType.LAZY, optional=false)
@JoinColumn(name="parentId", insertable=false, updatable=false, nullable=false, unique=false)
private Parent parentEntity;

// etc...

}

@Entity
class Parent {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

// etc...
}

那么有什么方法可以在不向父实体添加额外关系的情况下将父对象的删除级联到子对象?

首选仅使用 JPA 注释的解决方案,但我们将不胜感激。

最佳答案

不,这不可能。

级联(任何类型)遍历关系。如果您不告诉 JPA 从 A 到 B 的关系(即使存在从 B 到 A 的关系),那么它就无法自动遍历它。

附带说明:仅指定父 ID 而不是父实体将使它变得更加困难。要么 Hibernate/JPA 不是您正在做的事情的正确工具,要么您需要接受它的工作方式,这意味着指定和维护对象关系。

关于java - Hibernate - 如何使用仅指定单向子关系的注释级联删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2126164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com