Ситуация следующая есть два класса Restaurant и SpecialOffer, которые связаны @OneToMany. Класс Restaurant:
@OneToMany(mappedBy = "restaurant", fetch = FetchType.LAZY)
@JsonManagedReference
private List<SpecialOffer> specialOffer;
Класс SpecialOffer:
@ManyToOne
@JoinColumn(name = "restaurant_id")
@JsonBackReference
private Restaurant restaurant;
У ресторана может быть несколько специальных предложений. В БД тоже всё в порядке таблица специальных предложений содержит столбец 'restaurant_id' который является внешним ключом. Я написал контроллеры и теперь вызываю их. Если я получаю ресторан то в JSON вижу вложенные в него специальные предложения. А если я получаю специальное предложение то не вижу там вложенный ресторан, а он мне нужен для фронта. Код контроллера таков:
@GetMapping
@PreAuthorize("hasAuthority('everything:read entries')")
@ApiOperation("Get all special offers")
public ResponseEntity<List<SpecialOffer>> getAll() {
    List<SpecialOffer> result = specialOfferService.findAll();
    return new ResponseEntity<>(result, HttpStatus.OK);
}
Более того, я добавил в этот контроллер такую строчку:
System.out.println(result.get(0).getRestaurant());
И всё сработало. До контроллера специальное предложение доходит с рестораном, а во вне уходит без него. Вопрос: где рвётся нить, что добавить что бы JSON увидеть вложенный ресторан (и не городить при этом вручную кучу кода) P.S. - @Fetch(value = FetchMode.SUBSELECT) - не помогает.