gpt4 book ai didi

java - 实体的JPA集合字段是可修改的

转载 作者:行者123 更新时间:2023-11-30 04:06:16 26 4
gpt4 key购买 nike

我有一个 JPA 实体,其定义如下:

@Entity
@Table(name = "JPA_TEACHER")
public class Teacher implements ITeacher{
@Id
private String id;

@Column(name = "NAME")
private String name;

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
@JoinColumn(name="TEACHER_ID", referencedColumnName="ID")
private List<Student> students;

public Teacher() {
super();
}

public Teacher(String name) {
super();
this.name = name;
}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public List<Student> getStudents() {
return students;
}

public void setStudents(List<Student> students) {
this.students = students;
}

public void addStudents(Student student) {
if(this.students == null){
this.students = new ArrayList<Student>();
}
this.students.add(student);
}
}
  1. 我通过 EJB 上下文中的实体管理器进行命名查询,获得了教师列表。
  2. 然后,我使用结果列表创建一个新的 ArrayList,因为 JPA 返回的结果列表是只读的。
  3. 我尝试将学生添加到一些学生字段为空的教师的学生字段中。然后我得到一个 NullPointException ,无论我尝试在该字段为空时为其分配一个新的 ArrayList 。看来学生字段是可以修改的。但其他字段(例如 name)是可以修改的。

我用谷歌搜索过,但一无所获。希望有人对此有想法。非常感谢。

最佳答案

删除一名学生末尾的 S 以添加他。

this.students.add(学生);

关于java - 实体的JPA集合字段是可修改的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20652461/

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