Как обеспечить связь @OneToOne в Spring? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть настройка отношения сущностей как @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, чтобы не повредить базу данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...