我有一个部门实体,其关系如下:
许多部门可以在一个父部门:
@ManyToOne
@JoinColumn(name = "ik_parent_department_id")
private Department parentDepartment;
Run Code Online (Sandbox Code Playgroud)一个父部门可以有很多部门:
@OneToMany(mappedBy = "parentDepartment")
private Set<Department> children = new HashSet<Department>(0);
Run Code Online (Sandbox Code Playgroud)我想实现下一个:当我删除一个部门时,该部门所有子项的ik_parent_department_id参数都设置为null.任何想法如何做到这一点?
我正在使用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或者是否有更好的解决方案?