Hibernate でテーブル内のすべての行を削除する最良の方法は何ですか?
コレクションを反復処理して呼び出すsession.delete()
と、私の知る限りでは実行されません。
別のオプションを使用session.createQuery("delete ...")
しても、永続化コンテキストには影響しません。
より良いバリアントがない場合、いつこれらのメソッドを使用する必要がありますか?
Hibernate でテーブル内のすべての行を削除する最良の方法は何ですか?
コレクションを反復処理して呼び出すsession.delete()
と、私の知る限りでは実行されません。
別のオプションを使用session.createQuery("delete ...")
しても、永続化コンテキストには影響しません。
より良いバリアントがない場合、いつこれらのメソッドを使用する必要がありますか?
テーブルの切り捨てにHQLを使用できます
public int hqlTruncate(String myTable){
String hql = String.format("delete from %s",myTable);
Query query = session.createQuery(hql)
return query.executeUpdate();
}
DELETE FROM enityName
問題は、休止状態がカスケードをデータベースに任せるのではなく、内部で処理するという事実にあります。したがって、クエリを送信しても内部カスケードはトリガーされないため、矛盾/孤立が発生します。
パフォーマンスが非常に重要な場合 (結局のところ、テーブルを切り捨てることは毎日ではありません)、カスケードごとに複数の HQL 削除を行うことができます。つまり、カスケードを手動で処理します。
String stringQuery = "DELETE FROM tablename";
Query query = session.createQuery(stringQuery);
query.executeUpdate();