java - JPA:防止级联操作[坚持,删除...]

标签 java hibernate jpa

我有两个实体

@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/

相关文章:

java - Spring 数据JPA : query ManyToMany

java - JSP/DAO错误: The method getInstance() is undefined for the type ConnectionPool

java - 从 JOptionPane 中删除标题栏

hibernate - FetchMode 和 FetchType 的区别

java - 为什么我在这个 Spring 项目中获得与命名查询相关的 HibernateException?

java.sql.BatchUpdateException : ORA-00001: unique constraint while we generating primary key

java - Hibernate Composite key Criteria Join

java - 通过 Apache HTTP Client Fluent 接口(interface)设置 cookie

java - Guice 无限泛型绑定(bind)

java - "Remove"对分离实体的操作