gpt4 book ai didi

java - 在 hibernate 中一对多单向添加更多对象到现有列表中

转载 作者:太空宇宙 更新时间:2023-11-04 14:14:50 24 4
gpt4 key购买 nike

我研究了几个关于 hibernate 一对多单向关系的示例,并且想知道如何将新对象添加到现有列表中。

假设我有一个类 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。

最佳答案

  1. 如果 myClass 已分离,但 StudentList 已初始化:

    Override
    @Transactional
    public void addStudentToClass(MyClass myClass, Student student) {
    myClass.getStudentList().add(student);
    classDao.update(myClass);
    }
  2. 如果 myClass 已分离,但 StudentList 之前尚未初始化:

    Override
    @Transactional
    public void addStudentToClass(MyClass myClass, Student student) {
    MyClass attachedMyClass = classDao.merge(myClass);
    attachedMyClass.getStudentList().add(student);
    }

关于java - 在 hibernate 中一对多单向添加更多对象到现有列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27882018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com