Ответ 1
Мне не удалось выяснить, почему это происходит. Тем временем я выбрал обходной путь. Я делаю два отдельных обращения к БД. Один для получения родительского первого, а затем второго для извлечения ребенка на основе выбранного родительского элемента.
В качестве альтернативы, я могу одновременно вызвать оба вызова БД в сервисе и подготовить JSON как сложную строку перед отправкой на ui:
complex:{
parent:parent,
child:child
}
В любом случае это обходное решение. Идеальное решение - просто удалить @JsonIgnore в сопоставлении только с родительской стороны для дочернего класса. Но почему-то это не работает. Я отправлю сообщение, если найду, почему "идеальное" решение не работает!
Идеальное решение Обновлено как ответ 15 августа 2016 года День независимости Индии:
Проблема заключается в отображении:
Parent implements Serializable{
@ManytoMany(//declaration for join table)
@JsonBackReference
@com.fasterxml.jackson.annotation.JsonIgnore
Set <Child> childSet;
}
Когда вы говорите @JsonBackReference, на самом деле это означает игнорировать это поле при записи Json, то есть
@JsonBackReference ↔ @JsonIgnore
Следовательно, ребенок опущен, когда родительский сериализован. При сопоставлениях ORM всегда лучше использовать аннотации односторонней, а не двусторонней. Таким образом, вы можете избежать множества нежелательных исключений, получая данные, а во-вторых, сохраните свой бизнес-код.