首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我使用一对一映射时,相同的输出重复多次

当我使用一对一映射时,相同的输出重复多次
EN

Stack Overflow用户
提问于 2019-07-05 13:55:30
回答 2查看 82关注 0票数 0

我刚刚开始学习spring-boot-jpa。我尝试在我的程序中使用一对一映射,当我使用Getmapping获取输出时,我得到了多次重复的相同数据。我不确定代码有什么问题。

一对一的父级关系

代码语言:javascript
运行
复制
@OneToOne(mappedBy = "question", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private Options options;

一对一的孩子关系

代码语言:javascript
运行
复制
@OneToOne (cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name = "questionId")
    private Question question;

下面是Controller类

代码语言:javascript
运行
复制
@RestController
public class QuizController {
    List<Question> question = new ArrayList<Question>();

    @Autowired
    QuestionRepo questionRepo;


    @Autowired
    OptionsRepo optionsRepo;

    @GetMapping("/question")
    public List<Question> getQues() {
         return questionRepo.findAll();
    }


    @PostMapping("/question")
    public void setQues(@RequestParam String ques, String choice1, String choice2, String choice3, String choice4) {
        Question setQues = new Question();
        setQues.setQuestion(ques);
        Options setOp = new Options();
        setOp.setOption1(choice1);
        setOp.setOption2(choice2);
        setOp.setOption3(choice3);
        setOp.setOption4(choice4);

        setQues.setOptions(setOp);
        setOp.setQuestion(setQues);
        questionRepo.save(setQues);

这是我得到的输出,相同的选项重复多次,

代码语言:javascript
运行
复制
[{"questionId":1,"options":{"option1":"Red","option2":"Black","option3":"Yellow","option4":"Green","question":{"questionId":1,"options":{"option1":"Red","option2":"Black","option3":"Yellow","option4":"Green"}]
EN

回答 2

Stack Overflow用户

发布于 2019-08-05 12:36:28

尝试遵循具有子关系的代码

代码语言:javascript
运行
复制
@OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "Child columnname", referencedColumnName = "parent columnname")

尝试跟踪具有父关系的代码

代码语言:javascript
运行
复制
@OneToOne(mappedBy = "childrefrence ", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
票数 0
EN

Stack Overflow用户

发布于 2019-08-05 12:45:56

您的映射中存在问题。在设计双向映射时,应该有一方是关系的拥有方,另一方是映射方。您不应该在两端都使用@OneToOne,而应该在其中一端使用mapped。按照this answer更正您的映射

此外,为了解决无限递归问题,在一端使用@JsonManagedReference @JsonBackReference告诉串行化器(默认情况下是Jackson)在序列化对象时忽略一端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56897245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档