更新 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);
我的目标是更新哈希集值。我已经映射了两个 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);