Работа с двунаправленными отношениями

Имеются сущности с отношением @OneToMany и @ManyToOne.

User

@OneToMany(mappedBy = "user", cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY)
private List<Post> posts = new ArrayList<>();

Post

@ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.DETACH }, fetch = FetchType.EAGER)
@JoinTable(name = "user_post", joinColumns = @JoinColumn(name = "post_id"), inverseJoinColumns = @JoinColumn(name = "user_id"))
private User user;

При попытке сохранить / получить посты падает stack error.

Решил с помощью аннотирования @JsonManagedReference & @JsonBackReference.

User

@JsonManagedReference
@OneToMany(mappedBy = "user", cascade = { CascadeType.REFRESH }, fetch = FetchType.LAZY)
private List<Post> posts = new ArrayList<>();

Post

@JsonBackReference
@ManyToOne(cascade = { CascadeType.REFRESH, CascadeType.DETACH }, fetch = FetchType.EAGER)
@JoinTable(name = "user_post", joinColumns = @JoinColumn(name = "post_id"), inverseJoinColumns = @JoinColumn(name = "user_id"))
private User user;

Однако в данном случае я не могу получить юзера при запросе поста. Видимо из-за того что он не сериализуется как надо?

Прошу ваших советов по решению данного вопроса, что можно сделать и как будет правильней поступить?


Ответы (1 шт):

Автор решения: Митяй

Мне удалось решить эту проблему убрав @JsonBackReference & @JsonManagedReference и добавив @JsonIdentityInfo для всех моих сущностей.

Исчерпывающий ответ я нашел здесь https://stackoverflow.com/questions/41778386/jackson-bidirectional-relationship-one-to-many-not-working

→ Ссылка