我有两个实体
@Entity
@Table(name="parent")
public class Parent {
@Id
String uuid;
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(
name="child",
joinColumns=@JoinColumn(name="parent_uuid", insertable=false, updatable=false)
)
@Column(name="uuid")
private Set<String> childrenUuids = new HashSet<String>();
}
@Entity
@Table(name="child")
public class Child {
@Id
String uuid;
@Column(name="parent_uuid")
String parentUuid;
}
现在当我持久化 Parent 时,childrenUuids 中的 child 会自动持久化,因为 ManyToOne 关系。我想防止对父级的所有操作(例如坚持,删除......)被级联到子级,JPA 有可能吗?我已经研究了几天,但找不到答案。谢谢。
最佳答案
您应该使用@OneToMany 而不是@ElementCollection。 @OneToMany 默认不级联。据我所知,@ElementCollection 总是级联,这是有道理的,因为“@ElementCollection 定义了基本类型或可嵌入类的实例集合”,并且基本类型/可嵌入对象被认为是其父级的组成部分。
关于java - JPA:防止级联操作[坚持,删除...],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12449333/