クラスから他のすべてのプロパティなどを除外しました。質問にあるリストはどれもシリアル化されていません。回答リストの例を追加しました。JSON 応答は、"answers" が null であることを除いて問題ありません。なんで?コンソールに出力すると、quiz オブジェクトは完全に初期化されます (はい、レイジー ロードされ、リポジトリ レイヤーのカスタム コードであっても処理されます)。また、デバッガーを使用して確認しました。
@XmlRootElement
public class Quiz {
private List<Question> questions;
public List<Question> getQuestions() {
return questions;
}
public void setQuestions(List<Question> questions) {
this.questions = questions;
}
}
public class Question {
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "QuestionId", nullable = false)
@XmlElementWrapper(name = "answers")
public List<Answer> getAnswers() {
return answers;
}
public void setAnswers(final List<Answer> answers) {
this.answers = answers;
}
}
@Entity
@Table(name = "Answer")
public class Answer {
}
編集:
コメント解除されたコードが問題を引き起こしているようです。コメントを切り替えると、コードが機能します。
public void setAnswers(final List<Answer> answers) {
//this.answers = answers;
this.answers.clear();
for (Answer answer : answers) {
addAnswer(answer);
}
}
public void addAnswer(final Answer answer) {
if (!(answers.contains(answer))) {
checkThatOnlyOneAnswerMayBeCorrect(answer);
answers.add(answer);
}
}