首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除不起作用的OneToMany关系的子项

问删除不起作用的OneToMany关系的子项
EN

Stack Overflow用户
提问于 2015-08-11 18:02:30
回答 1查看 156关注 0票数 0

我在从数据库中删除OneToMany关系中的孩子时遇到问题。

以下是我的类:

代码语言:javascript
复制
public class Question {

 private Set<Answer> answers
/.................

  @OneToMany(fetch = FetchType.EAGER, mappedBy = "question", orphanRemoval = true)
  public Set<Answer> getAnswers() {
    return this.answers;
  }

/.................
}

和答案类:

代码语言:javascript
复制
public class Answer {

private Question question
/............

  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "QUESTION_ID", nullable = false)
  public Question getQuestion() {
    return this.question;
  }

/...........
}

我正在尝试删除问题及其所有答案,如下所示:

代码语言:javascript
复制
public void deleteQuestions(List<Question> questions){

    for(Question question : questions){
      Question databaseQuestion = questionRepository.findOne(question.getId());
      for(Answer answer : databaseQuestion.getAnswers()){
        answerRepository.delete(answer.getId());
      }
      questionRepository.delete(databaseQuestion);
    }
  }

我得到的是:

代码语言:javascript
复制
ORA-02292: integrity constraint (DATABASE_NAME.ANSWER_QUESTION_FK) violated - child record found

我不知道哪里出了问题。当我在Question getAnswers()上运行CascadeType.ALL时,仍然会遇到同样的问题。我正在对Spring数据使用Hibernate ORM。此外,当我强制app显示sql命令时,我可以看到Hibernate甚至没有尝试删除答案,只有一个删除问题。

EN

回答 1

Stack Overflow用户

发布于 2015-08-11 18:10:52

尝试级联,使用方法如下

代码语言:javascript
复制
@OneToMany (cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "question",orphanRemoval=true)

此链接链接您的答案JPA CascadeType.ALL does not delete orphans

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

https://stackoverflow.com/questions/31938768

复制
相关文章

相似问题

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