表: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
提交
取消