我有兩個對象用戶和工作單號。一個用戶可以有多個工單。問題是,當我刪除用戶時,它也會將分配的工單刪除給該用戶。在刪除用戶之前,我已嘗試將我的工作訂單外鍵設置爲NULL,但仍會刪除與該用戶關聯的所有工單。我想在不刪除分配給用戶的工單的情況下刪除用戶。我錯過了什麼或做錯了什麼?在休眠狀態下無子女無法刪除父母
這裏是我的用戶等級:
@OneToMany(fetch = FetchType.LAZY, mappedBy="user", orphanRemoval=true)
private Set<WorkOrder> workOrder;
工單類:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="user_id", nullable = true)
private User user;
在UserDAOImpl類:
@Override
public void deleteUser(int theId) {
// get the current hibernate session
Session currentSession = sessionFactory.getCurrentSession();
// delete object with primary key
User user = currentSession.get(User.class, theId);
Set workorders = user.getWorkOrder();
Iterator<WorkOrder> work = workorders.iterator();
while (work.hasNext()){
WorkOrder workorder = work.next();
workorder.setUser(null);
}
currentSession.remove(user);
}
將workOrder複製到新表中,然後刪除用戶?就像製作一份workOrder的副本(將其保存到一個新表格),然後刪除用戶。當你刪除用戶時,他/她的工作訂單也將被刪除。但是您將workOrder保存到新表中 –
這是可能的,但應該有簡單的方法,無需創建新表。 – RomZes13