Я преобразую управление базой данных моего проекта из JDBC MySQL в JPA Hibernate, база данных должна остаться прежней.
(От простого API Джерси до Spring с API Hibernate).
Есть таблицы для Фирма , Клиент и Купоны .
Каждая Компания может управлять многими купонами , и каждый Клиент может также «приобрести» много купонов .
Поэтому у меня есть таблица соединений с именем company_coupon и другая таблица с именем customer_coupon .
Когда Компания удаляется, если Купон не принадлежит какой-либо другой Компании - таким образом, нет менеджера - Купон удаляется, и в результате как и все отношения ( company_coupon и customer_coupon ).
При удалении Клиента, отношение в coupon_customer также должно быть удалено.
Это похоже на отношения OneToMany , поскольку Купон не должен знать, кто его владельцы, (Компания управляет купонами, Клиент владеет купонами), но все, что я нашел относительно JPA Hibernate и таблиц соединений, указывает на то, что это отношение ManyToMany , что меня смущает.
Как определить, что я описал в JPA Hibernate?
Кроме того, я имел обыкновение иметь архивные таблицы для всего, удаляя их из исходных таблиц. что может усложнить обработку вещей.
Поэтому я добавил к каждому поле ' удалено ' и настроил функцию удаления объекта, чтобы изменить его удаленное состояние на истинное с помощью:
@SQLDelete(sql =
"UPDATE " + TableHelper.TBL_COMPANY
+ " SET " + TableHelper.REMOVED + " = true"
+ " WHERE " + TableHelper.COMPANY_KEY + " = ?")
Теперь, если вы попытаетесь удалить компанию, изменится только значение ' Удалено '.
Но я хочу, чтобы все купоны, которые остались неуправляемыми - без отношения к какой-либо существующей, неархивированной компании - также были заархивированы.
Действительно сложный процесс только для управления данными ... есть идеи, как это сделать эффективно?
Заранее спасибо:)