相关疑难解决方法(0)

在@OneToMany中,在hibernate中删除set null

我有一个部门实体,其关系如下:

  1. 许多部门可以在一个父部门:

    @ManyToOne
    @JoinColumn(name = "ik_parent_department_id")
    private Department parentDepartment;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 一个父部门可以有很多部门:

    @OneToMany(mappedBy = "parentDepartment")
    private Set<Department> children = new HashSet<Department>(0);
    
    Run Code Online (Sandbox Code Playgroud)

我想实现下一个:当我删除一个部门时,该部门所有子项ik_parent_department_id参数都设置为null.任何想法如何做到这一点?

hibernate

19
推荐指数
3
解决办法
1万
查看次数

使用@OneToOne注释从表中删除

我正在使用JPA2和Hibernate实现.

我有这样的简单映射:

@Entity 
class Topic {

    @Id
    @GeneratedValue(strategy = IDENTITY)

    int id;

   @OneToOne(cascade = ALL)
   @JoinColumn(name = "id_poll")
   private Poll poll;

}

@Entity 
class Poll {
    @Id
    @GeneratedValue(strategy = IDENTITY)
    int id;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我删除一个也在Topic中的Poll对象时,我收到一个错误.

java.sql.SQLException:完整性约束违规FKCC42D924982D3F4B表:语句中的TOPICS [从民意调查中删除id =?]

我理解这是因为如果Poll记录在另一个表中有引用,我就无法删除它.我怎么解决这个问题?我是否必须在主题表中手动设置poll = null或者是否有更好的解决方案?

hibernate cascade one-to-one jpa-2.0

5
推荐指数
1
解决办法
3649
查看次数

标签 统计

hibernate ×2

cascade ×1

jpa-2.0 ×1

one-to-one ×1