私は2つのオブジェクトを持っていますユーザーとワークオーダー。 1人のユーザーが複数の作業指示を持つことができます。問題は、ユーザーを削除すると、そのユーザーに割り当てられた作業指示書も削除されることです。ユーザーを削除する前に作業指示の外部キーをNULLに設定しようとしましたが、そのユーザーとのすべての関連作業オーダーが削除されます。私は、ユーザーに割り当てられた作業指示書を削除せずにユーザーを削除したいと思います。何が欠けているのか、間違っているのですか?Hibernateで子なしの親を削除できません
@OneToMany(fetch = FetchType.LAZY, mappedBy="user", orphanRemoval=true)
private Set<WorkOrder> workOrder;
WorkOrderはクラス:
ここにありますが、私のUserクラスである
@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