java 使用Sping Boot Hibernate JPA将子实体删除或添加到父实体

vsdwdz23  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(168)

我有以下实体:

class Question {
    String question;
    QuestionType type;
    List<QuestionOption> options;
}

class QuestionOption {
    String option;
    Question question;
}

我的前端网页处理编辑一个Question也做添加/更新/删除的孩子QuestionOption的。假设我添加了一个新的选项,并更改了问题字符串本身,我希望它在一个请求中被更改。
我当前更新Question实体的代码如下所示:

public Question update(Question original, Question updated) {
        original.setQuestion(updated.getQuestion());
        original.setType(updated.getType());
        original.setOptions(updated.getOptions());
        return questionRepository.save(original);
    }

然而,这并没有添加/更新/删除Question的子QuestionOption,我不知道我在这里错过了什么。

qv7cva1a

qv7cva1a1#

要更新实体,首先需要获取该实体的托管示例,更新其值,然后保存它。

public Question update(Integer originalQueId, Question updated) {
        Original original=questionRepository.findById(originalQueId);
        original.setQuestion(updated.getQuestion());
        original.setType(updated.getType());
        original.setOptions(updated.getOptions());
        return questionRepository.save(original);
    }

我只是假设你有一些身份证。问题的主键。使用它,你可以从数据库中获取原始数据。然后,该示例成为托管示例,该托管示例可用于更新DB中的数据。

相关问题