Как получить в одном rest методе все уровни json из разных сущностей?
Java.Stringboot.Rest api. Есть три сущности: media, question, answer. media и question связаны многие ко многим. Question и answer связаны один ко многим. Соответственно media "не видит" answers, которые "видит" только question. На скриншоте как выводится без answers. Как вывести все вложенности json: media -> question -> answer?
public class Media {
...
@ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.MERGE })
@JoinTable(name = "media_question", joinColumns = { @JoinColumn(name = "media_id") }, inverseJoinColumns = {
@JoinColumn(name = "question_id") })
private Set<Question> questions = new HashSet<>();
...
}
public class Question {
...
@ManyToMany(fetch = FetchType.LAZY,
cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
},
mappedBy = "questions")
@JsonIgnore
private Set<Media> medias = new HashSet<>();
...
}
public class Answer {
...
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "question_id", nullable = false)
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private Question question;
...
}
Контроллер:
@GetMapping("/medias/{id}")
public ResponseEntity<Media> getMediaById(@PathVariable("id") long id) {
Media media= mediaRepository.findById(id)
.orElseThrow(() -> new ResourceNotFoundException("Not found Media with id = " + id));
return new ResponseEntity<>(media, HttpStatus.OK);
}
JSON как должен выводиться с answers, но не выводится:
[![{
"id": 5,
"title": "test",
"description": "so so",
"published": true,
"questions": [
{
"id": 9,
"name": "How many?"
"answers":[
{
"id": 1,
"name": "5"
},
{
"id": 2,
"name": "2"
}
]
}
]
}]
