У меня есть настройка отношения сущностей как @OneToOne. Например (пользователь <-> домашнее животное)
@Entity
public class Pet {
@OneToOne
@JoinColumn(name = "user_id", nullable = true)
User user;
}
@Entity
public class User {
@OneToOne(mappedBy = "user")
Pet pet;
}
К моему удивлению, Spring позволит вам назначить несколько сущностей в связи (несколько домашних животных, связанных с пользователем) при сохранении через репозитории.
//for example:
pet.user = user1;
pet2.user = user1;
petRepository.save(pet);
petRepository.save(pet2); //allowed
Но после сохранения база данных будет повреждена. Вызов petRepository.findAll или findById или чего-нибудь действительно ... теперь выдаст эту ошибку
nested exception is org.hibernate.HibernateException: More than one row with the given identifier was found: 1245, for class: package.models.Pet
Итак, как правильно обеспечить отношения OneToOne, чтобы не повредить базу данных?