システム内の多数の(すべてではない)テーブルのローカルMySQLテストインスタンス内の既存のデータを削除する必要があるテストスイートがあります。
delete from customer;
もちろん、それにcustomer
はかなりの数の外部キーがあるので、さらにいくつかのテーブルを削除する必要があります...
delete from customer_email;
delete from customer_phone;
そして繰り返しますが、これらのテーブルにはより多くの外部キーがあります...
delete from customer_email_notification;
delete from customer_phone_call;
などなど広告吐き気。テストセットアップを作成するために、データモデル全体を精神的にナビゲートしなければならないのはイライラします。
私はHibernateを使用しているので、テーブルの優先順位リストを自動的に取得して、削除ハンドラーに直接渡すことができる方法があるかどうか疑問に思いました。理想的には:
List<String> dependentTables = foreignKeyGraph.findAll("customer");
deletionHandler.clean(dependentTables);
これを実行できるHibernateユーティリティはありますか?ドメインのアノテーションと派生テーブル名をそのようにトラバースするものを書くつもりでしたが、かなり一般的な問題に対しては多くの作業のようです。ありがとう!