私は、1つ以上のリレーションシップ(1つのリクエストレコードとリクエスト詳細レコード)の非常に典型的なシナリオを持っており、 hibernateを使って変更した後で再度保存します...クライアントの側で詳細レコードの1つが削除され、削除されたことを保持したいとします(データベースから削除します)...現在のロジックは以下を行います(各更新時に):すべてのスレーブレコードを再度取得し、クライアント入力を永続レコードと比較します。レコードが欠落している場合は削除されますので、session.delete
が呼び出され、指定レコードが削除されます。更新されましたsession.update
....これを行うことなくレコードが削除されたことをプロバイダに通知する別の方法があるのだろうかと思いますomparison ...どんな助け?1対多数のマスター/ディテール関係の詳細の削除を処理する - 休止状態
0
A
答えて
-1
あなたはカスケードを使用してのようなあなたの親の変更の影響の子を作るために孤児オプション削除することができます。
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval=true)
を次に、分離インスタンスの再付着のためSession.update()またはSession.merge()を使用する必要があります。このようにすると、トランザクションの最後に(コミット時に)変更が保存されます。
session.persist(a1);
session.flush();
session.getTransaction().commit();//a1 saved
session.evict(a1);//a1 detached
a1.getTableBs().remove(0);//remove child
session.beginTransaction();
session.update(a1);//reattach a1
session.flush();
session.getTransaction().commit();
session.close();
そして、私のトランザクションの終了時に子供を削除するには、次のように実行クエリを休止:
これは私のコード例である私が知っているよう
Hibernate:
delete
from
TABLE_B
where
ID=?
関連する問題
- 1. 休止状態で1対多の関係
- 2. 休止状態で1対1の関係を使用して削除
- 3. 休止状態と多対多の関係の問題
- 4. 休止状態で1対多のマッピング
- 5. 休止状態の多対多リレーションシップを削除
- 6. 休止状態で多対1カスケード削除
- 7. 休止状態でのカスケード削除と1対1のマッピング
- 8. 休止状態で1対多の関係のレコードを削除しようとしています
- 9. 休止状態の削除
- 10. 休止状態:複数のFK関係
- 11. 休止状態で1対多のリレーションシップを設定する
- 12. JPAの休止状態での1対1の関係の外部キー制約
- 13. 多対1のマッピングされた列の休止状態
- 14. 休止状態での1対多マッピングおよび多対多マッピング
- 15. 休止状態のManyToMany関係を持つコレクションからオブジェクトを削除する
- 16. Java JPA /休止状態のカスケード削除
- 17. 休止状態の一対多関係が正しく更新されない
- 18. スプリングデータ。休止状態。 1対多の関係のときに結合テーブルの結果を制限する
- 19. 関係が休止状態にある
- 20. 休止状態で休止状態
- 21. が休止状態
- 22. 多対多エンティティプロパティの休止状態の基準
- 23. 休止状態:私は休止状態を勉強
- 24. 休止状態:「1」親としての双方向の1対多の親
- 25. 休止状態の多対多カスケードは動作しません
- 26. (休止状態)
- 27. Springブート/休止状態:1対1の一方向の関係を定義する方法
- 28. 休止状態:休止状態の接続を変更する
- 29. 休止状態の挿入?
- 30. 休止状態で1対1の関連付けを保存しますか?
、孤児の除去は動作しません。孤立したオブジェクトがデタッチされている限り、データベースからエンティティ全体を再度読み取る必要があります...指定された詳細オブジェクトを削除してから更新してください...同じシナリオですか –
それは機能しません。 (マージ/更新を使用して)アタッチすると、コミット時に削除された子が削除されます。これが私の地域でこれを試してください。 – Angga
私はちょうど私のコードでそれを試して、エンティティが管理される前に削除が行われた場合、エンティティが管理されている間に削除が完了した場合にのみ動作し、データベースに反映されません。詳細は追加されますが、削除された詳細はデータベースに残ります –