更新 HashSet<Object> 值

Update HashSet<Object> values

我的目标是更新哈希集值。我已经映射了两个 table 具有 onetomany 和 manytoone 关系。

我的流程 我有 Examination 和 ExamPaper tables。在考试中,我创建了 Set examPapers = new HashSet() with onetomany.I ExamPaper 我刚刚与 manytoone 建立了关系。我已经成功地在两个 table 中存储了一个值,我在更新时出错 Section.Please 检查我的以下编码。

POJO考试

private String examName;
private Set<ExamPaper> examPapers = new HashSet<ExamPaper>();

@Column(name = "exam_name") 
@Field
public String getExamName() {
    return examName;
}
public void setExamName(String examName) {
    this.examName = examName;
}

@OneToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER)
@JoinColumn(name="examination_id")
public Set<ExamPaper> getExamPapers() {
    return examPapers;
}
public void setExamPapers(Set<ExamPaper> examPapers) {
    this.examPapers = examPapers;
}

POJO 试卷

private String maxMark;
private Examination examination;

@Column(name = "maxmark") 
@Field
public String getMaxMark() {
    return maxMark;
}
public void setMaxMark(String maxMark) {
    this.maxMark = maxMark;
}

@ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.EAGER)
@JoinColumn(name="examination_id")
public Examination getExamination() {
    return examination;
}
public void setExamination(Examination examination) {
    this.examination = examination;
}

我的控制器

Set<ExamPaper> examPapers=new HashSet<ExamPaper>();
String[] maxMarks=request.getParameterValues("maxMarks");
for (int i=0;i<maxMarks.length;i++) {
   ExamPaper examPaper = new ExamPaper();
   examPaper.setMaxMark(maxMarks[i]);
   examPapers.add(examPaper);
}
examination.setExamPapers(examPapers);
examinationService.saveOrUpdateExamination(examination);

此代码已成功保存到数据库中。我正在尝试更新(即添加 maxMarks 或删除 maxMarks )。它使 ExamPaper table 值加倍,并从 ExamPaper.I 中删除考试 ID 已附加数据库的保存和更新图片。

注意:第一部分考试,每张图片的第二部分试卷。

保存 - http://postimg.org/image/xzg8qu3dh/

更新- http://postimg.org/image/t22o5q1ed/

如何更新?

我认为,你的映射有误,尝试使用这个:

POJO 考试

 private Set<ExamPaper> examPapers = new HashSet<ExamPaper>();

 @OneToMany(cascade={CascadeType.ALL},fetch=FetchType.EAGER,  mappedBy='examination')
 public Set<ExamPaper> getExamPapers() {
  return examPapers;
 }

POJO 试卷

 private Examination examination;

 @ManyToOne(cascade={CascadeType.ALL},fetch=FetchType.EAGER)
 @JoinColumn(name="examination_id")
 public Examination getExamination() {
    return examination;
 }

之后,如果您仍然遇到同样的问题,请将此行添加到控制器内的 for 循环中:

 examPaper.setExamination(examination);
 examPapers.add(examPaper);