私はクラスMVCを使用してクラス階層:Employee->{Manager, Waiter, Chef}
でCRUDを処理しています。 私はdiscriminatorとしてフィールドDTYPEを使って単一テーブル継承戦略を使用しています。 私が立ち往生したのは、ウェイター - >マネージャー(ウェイターが昇進したのではなく、単にユーザーの入力エラーを修正するためのものです!!!)または他のエンティティーの組み合わせを更新する必要がある状況です。Hibernate:変更された型のエントリを更新します。
自体に休止状態私は明示的に行う場合でも、DTYPEフィールドに記録タイプを変更することを拒否:
manager
は、既存のID(ウェイター型にbelongning(DTYPEと
Manager
クラスのオブジェクトである
managerDAO.update(manager);
= "ウェイター"))。
今質問があります:私のユーザーの入力ミスを修正するにはどうすれば簡単ですか?元のWaiterエントリを同じIDのManagerエントリにする必要があります。
このような状況に対処するためにHibernateにいくつかのトリックがあるのだろうか?私は車輪を再発明したくない、または回避策を見つけることがHibernateチームによって予見されるべきであると感じているからです。
私はすでに正しい型の新しいエントリを削除し、再挿入
- SQLのDTYPEフィールド上の更新と
- を検討している...しかし、これはすべてが休止状態の誤った使用方法のように見えます。
助けていただけたら幸いです!