Допустим, у меня есть следующее отображение Java ORM:
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
@OneToOne
private Address workAddress;
@OneToOne
private Address homeAddress;
}
@Entity
public class Address {
@Id
@GeneratedValue
private Long id;
}
И скажем, что данный экземпляр Person
был создан с использованием того же постоянного Address
экземпляра. Например:
@Transactional
public void reuseAddressInPerson() {
Address address = new Address();
// fill address values
address = em.persist(address);
Person person = new Person();
person.workAddress = address;
person.homeAddress = address;
em.persist(person);
}
Исходя из этого, когда я загружаю это постоянное person
с использованием hibernate, экземпляры адресов для workAddress
и homeAddress
будут одинаковыми ссылками в объекте person
. Есть некоторый способ заставить hibernate создавать новые экземпляры для каждого объекта address
при вызове em.find()
?
Примечание: я создал этот пример, иллюстрирующий мой вопрос, но в реальном сценарии его нецелесообразно использоватьклон (или что-то подобное), чтобы подготовить этот объект.