JPA删除从集合中删除的记录

时间:2018-06-01 17:26:41

标签: hibernate spring-data-jpa

我有一个带JPA的春季启动项目。当从实体集合中删除记录时,我需要hibernate从数据库中删除记录,然后在该实体上调用save。这可能吗。 例如

@Entity
@Table(name="TABLEA")
public class Parent {
  @Id
  @Column(name = "TABLEA_ID")
  private Integer id;
  @OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL, orphanRemoval=true)
  @JoinColumn(name="TABLEB_FK", referencedColumnName="TABLEA_ID")
  private List<Child> children; // ??
} 

@Entity
@Table(name="TABLEB")
public class Child {
  @Id
  @Column(name = "TABLEB_ID")
  private Integer id;  
  @Column(name = "TABLEB_FK")
  private Integer fkId;  

}

在这个实体类中,我有一个方法可以分析集合中的哪些对象仍然存在。在某些情况下,从集合中删除特定的Child对象,并在Parent实体上调用save。不幸的是我得到了一个ORA-01407:无法更新(&#34; TABLEB&#34;。&#34; TABLEB_FK&#34;)为NULL。 似乎hibernate在删除孤立之前将关系更新为null,并且数据库对该列具有非null约束。我有所有处理来添加/删除实体类中的对象,因此无法在单个对象上显式调用delete,并希望通过发出保存来从父级中删除此删除。这可能是不可能的。任何帮助将非常感激。感谢。

0 个答案:

没有答案