为了账号安全,请及时绑定邮箱和手机立即绑定

春季数据JPA中的嵌套一对多问题

春季数据JPA中的嵌套一对多问题

慕容708150 2022-09-07 16:54:16
表: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

尝试使用或避免重复。SetSortedSet


查看完整回答
反对 回复 2022-09-07
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号