2
所以我已经注意到有没有简单的解决方案使用JPA删除设置null,但我听说可能有解决方法。 我的问题是(它变得有点抽象这里,我希望它仍然是有道理的):JPA /休眠:在删除设置null
想有员工。每个员工都知道他们的老板,但不是相反。老板本身就是员工。
我尽力去完成什么:
如果老板被炒鱿鱼,大家谁在他的工作失去了他的老板(很明显)。
@Entity
@Table(name = "employee")
public class Employee
{
@Column (name = "id")
private String id;
@OneToOne
@JoinColumn(name = "boss")
private employee boss;
}
这是它在SQL如何工作的:
ALTER TABLE EMPLOYEE
ADD CONSTRAINT CONSTRAINTNAME FOREIGN KEY (BOSS)
REFERENCES EMPLOYEE (ID)
ON DELETE SET NULL;
我不希望人们没有一个老板得到藏汉解雇了,我只希望他们失去自己的前任老板的参考。 我看到了使用@PreRemove的解决方案,但我不确定这是否和我打算的一样。
在此先感谢!
其实我使用@OneToOne关联,忘了补充一点。那么它会怎样呢? – roqstr 2014-11-24 14:06:44
几乎相同,只是你需要一个'@ OneToOne'而不是'@ oneToMany',然后在'removeAssociationsWithChilds(){employeeUnderSupervision.setBoss(null)}' – isah 2014-11-24 14:08:48
老板在监督下最多只有一个'员工' ,所以它可以列为单个属性'@OneToOne(mappedBy =“boss”)private Employee employeeUnderSupervision;'这就是为什么'removeAssociationsWithChilds(){employeeUnderSupervision.setBoss(null); }' – isah 2014-11-24 14:16:02