Есть ли возможность в JPA 2.0 утверждать, что встроенный объект встроен только с одним объектом, но не с несколькими?JPA 2.0: Встроенный объект, исключающий один объект
В моем случае у меня есть Address
, который я могу присвоить Customer
. Я хочу, чтобы каждый клиент использовал свой собственный адресный объект и хотел бы создать ограничение, которое гарантирует, что ни один из двух клиентов не будет делить фактически тот же объект.
Мой код выглядит следующим образом:
@Entity
public Customer {
@Id
@GeneratedValue
private Long id;
@Embedded
private Address address;
// ..
}
@Embeddable
public Address {
private String street;
private String city;
// ..
}
В настоящее время, если я создаю два клиента, и присвоить им один и тот же Address
объект, а затем сохраняются и читать их, они снова разделяют объект с тем же лицом. Я хочу запретить сохранение таких клиентов, которые обмениваются адресами с другими клиентами.
Если я понимаю вашу точку зрения, вы хотите создать уникальный адресная запись, даже если ее адрес совпадает с адресом? – Phani
@Phani Точно. Будущие изменения адреса должны влиять только на одного клиента, который имеет этот адрес и не имеет побочных эффектов для других клиентов. Один из способов решения этой проблемы - создать копию адреса при его установке (я полагаю), но я ищу решение на основе JPA. – riwi
Если вы не переопределили метод equals, он должен идеально хранить 2 записи в базе данных. Пожалуйста, проверьте sql, сгенерированный для действия, чтобы определить, что заставляет его хранить как 1. – Phani