В моем java web app
(с использованием playframework
) у меня есть Customer
с отображением Address
следующим образом
@Entity
class Customer extends Model{
@ManyToOne
Address address;
...
}
@Entity
class Address extends Model{
String addressline1;
...
}
У меня есть метод setCustomerAddress (..), который принимает пользователяinput, извлекает сопоставленный адрес из базы данных или создает новый адрес, а затем, если адрес клиента является нулевым или другим, устанавливает адрес ввода.
public static void setCustomerAddress(...){
Customer = Customer.findById(custId);
Address address = findOrCreateAddress(addressline1,...);
if ((customer.getAddress()==null) || (!customer.getAddress().equals(address))) {
customer.setAddress(address);
customer.save();
}
...
}
customer1 создает Address1.customer2 вводит один и тот же Address1.
теперь оба имеют Address1;
id | addressline1 | addressline2 | country
----+--------------+--------------+---------
25 |apple st. | | US
id |name |address_id
----+--------------+------------
1 |jim |25
2 |roy |25
, если customer2 добавляет адресную строку2, адрес считается другим, поэтому создается новый адрес
addressТаблица
id | addressline1 | addressline2 | country
----+--------------+--------------+---------
25 |apple st. | | US
26 |apple st. |richman's end | US
Таблица клиентов
id |name |address_id
----+--------------+------------
1 |jim |25
2 |roy |26
Предположим, клиент1 обновляет свой адрес, добавляя ту же адресную строку2, что и клиент2, теперь его address_id указывает на адрес таблицы клиентов customer2
id |name |address_id
----+--------------+------------
1 |jim |26
2 |roy |26
Это оставляет адресную запись (25), которая не принадлежит ни одному клиенту.
Должна ли она быть оставлена в БД или должна быть удалена? Какая надлежащая практика? ManyToOne не позволяетдля любого orphanRemoval, я думаю. Я должен очистить это в коде, может быть, делать некоторые проверки для таких одиноких объектов?
Любые указатели будут приветствоваться