将更多对象添加到休眠中的现有列表中一对多单向
Add more object into an existing list in hibernate one to many unidirection
我研究了几个关于 hibernate 一对多单向关系的示例,想知道如何将新对象添加到现有列表中。
假设我有一个 class MyClass
@OneToMany(fetch=FetchType.LAZY, cascade={
CascadeType.PERSIST,
CascadeType.REMOVE})
@org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
@JoinTable(name="enrolled_student",
joinColumns = {@JoinColumn(name="Class_ID")},
inverseJoinColumns = {@JoinColumn(name="STUDENT_ID") })
public List<Student> getStudentList() { return studentList;}
public void setStudentList(List<Student> studentList) { this.studentList = studentList;}
private List<Student> List;
如果我有一个学生名单,比如s1、s2、s3。现在我想将学生 s4 添加到 class。我该怎么做?
我试过这样做:
@Override
@Transactional
public void addStudentToClass(MyClass class, Student student) {
List<student> list = new ArrayList<Student>();
list.add(student);
budget.setStudentList(list);
classDao.update(budget);
}
但它并没有像我预期的那样工作。它擦除所有现有的学生 s1、s2、s3,然后保留 s4。
如果 myClass 已分离但 studentList 已初始化:
Override
@Transactional
public void addStudentToClass(MyClass myClass, Student student) {
myClass.getStudentList().add(student);
classDao.update(myClass);
}
如果 myClass 已分离但 studentList 之前尚未初始化:
Override
@Transactional
public void addStudentToClass(MyClass myClass, Student student) {
MyClass attachedMyClass = classDao.merge(myClass);
attachedMyClass.getStudentList().add(student);
}
我研究了几个关于 hibernate 一对多单向关系的示例,想知道如何将新对象添加到现有列表中。
假设我有一个 class MyClass
@OneToMany(fetch=FetchType.LAZY, cascade={
CascadeType.PERSIST,
CascadeType.REMOVE})
@org.hibernate.annotations.Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
@JoinTable(name="enrolled_student",
joinColumns = {@JoinColumn(name="Class_ID")},
inverseJoinColumns = {@JoinColumn(name="STUDENT_ID") })
public List<Student> getStudentList() { return studentList;}
public void setStudentList(List<Student> studentList) { this.studentList = studentList;}
private List<Student> List;
如果我有一个学生名单,比如s1、s2、s3。现在我想将学生 s4 添加到 class。我该怎么做?
我试过这样做:
@Override
@Transactional
public void addStudentToClass(MyClass class, Student student) {
List<student> list = new ArrayList<Student>();
list.add(student);
budget.setStudentList(list);
classDao.update(budget);
}
但它并没有像我预期的那样工作。它擦除所有现有的学生 s1、s2、s3,然后保留 s4。
如果 myClass 已分离但 studentList 已初始化:
Override @Transactional public void addStudentToClass(MyClass myClass, Student student) { myClass.getStudentList().add(student); classDao.update(myClass); }
如果 myClass 已分离但 studentList 之前尚未初始化:
Override @Transactional public void addStudentToClass(MyClass myClass, Student student) { MyClass attachedMyClass = classDao.merge(myClass); attachedMyClass.getStudentList().add(student); }