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