表:survey(id, title);survey_question(id, survey_id, title);survey_question_option(id, survey_question_id, content)實體:@Entitypublic class Survey implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; @OneToMany(mappedBy = "survey", fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL) private List<SurveyQuestion> questions;}@Entitypublic class SurveyQuestion implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @JoinColumn(nullable = false) @ManyToOne @JsonIgnore private Survey survey; private String title; @OneToMany(mappedBy = "surveyQuestion", fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.ALL) private List<SurveyQuestionOption> options;}@Entitypublic class SurveyQuestionOption implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @JoinColumn(nullable = false) @ManyToOne @JsonIgnore private SurveyQuestion surveyQuestion; private String content;}現在添加調查@PostMapping@ResponseStatus(HttpStatus.CREATED)public Survey create(@RequestBody Survey survey) { return repository.save(survey);}請求正文中的 JSON{ "title": "I'm a survey!", "questions": [{ "title": "I'm a question!", "options": [{ "content": "I'm an option." }, { "content": "I'm an option." }, { "content": "I'm an option." }, { "content": "I'm an option." }] }, { "title": "I'm a question!", "options": [{ "content": "I'm an option." }, { "content": "I'm an option." }, { "content": "I'm an option." }, { "content": "I'm an option." }] }]}
1 回答

慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
您正在同時用于兩者fetch = FetchType.EAGER
private List<SurveyQuestion> questions;
和
private List<SurveyQuestionOption> options;
因此,默認情況下,您始終在此處獲取整個樹。
現在,這里的關鍵是您將這些依賴項聲明為 .這意味著有序但允許重復。在這里,您可以獲得每個選項數量的重復問題。List
嘗試使用或避免重復。Set
SortedSet
添加回答
舉報
0/150
提交
取消