我有一个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);
}
}
ArrayList
,因为JPA返回的结果列表是只读的。NullPointException
,无论我是否尝试在该字段为null时将新ArrayList
分配给该字段。似乎学生领域是可修改的。但是name
等其他字段是可修改的。我用谷歌搜索但没有发现任何东西。希望有人对此有所了解。 非常感谢。
答案 0 :(得分:1)
从一个stundent处移除S以添加他。
this.students.add(学生);
答案 1 :(得分:1)
除了Big Bad Baerni的回复,请确保您的学生拥有指定的教师属性,因为学生是此处关系的所有者。
public void addStudents(Student student) {
if(this.students == null){
this.students = new ArrayList<Student>();
}
student.setTeacher(this)
this.students.add(student);
}
我不知道你的域名,但恕我直言,这里应该有很多ToMany关系