Я использую JPA в своем загрузочном приложении Spring и столкнулся со следующей проблемой. Между User -> Letter
User entity
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<Letter> letters;
Letter Entity
@Entity
public class Letter {
@Id
@GeneratedValue
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private User user;
существует отношение oneToMany. Этот код работает правильно в следующем сценарии:
Letter letter = new Letter();
Set<Letter> letters = new HashSet<>();
letters.add(letter);
User user = new User();
user.setLetters(letters);
User newUser = controller.createUser(user);
User retrievedUser = controller.getUser(newUser.getId());
retrievedUser.getLetters() // contains letter
но когда я хочу сначала создать пользователя, а затем добавить письмо, он не работает должным образом
User user = new User();
User newUser = controller.createUser(user);
Letter letter = new Letter();
letter.setUser(newUser);
Letter newLetter = controller.createLetter(letter);
User retrievedUser = controller.getUser(newUser.getId());
retrievedUser.getLetters() // is null
Я не эксперт по JPA, но я не понимаю, почему это не работает, во-вторых чехол?