У меня есть набор тестов, который должен удалить все существующие данные в моем локальном тестовом экземпляре 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, которая может это сделать? Я собирался написать что-то, что проходило через аннотации нашего домена и производные имена таблиц таким образом, но это кажется большой работой для довольно распространенной проблемы. Спасибо!