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

标签 java jpa ejb entitymanager managed-bean

我有一个 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/

相关文章:

java - 如何将不同的方法与泛型一起使用

java - 在 Google appengine java 中是否可以从 id 复制 key ?

java - 主屏幕小部件运行时,数据对象的静态数组列表是否会导致内存泄漏

java - 创建 hello world hibernate 项目的问题

ejb - @EJB 未注入(inject)到 JAX-RS

java - 使用自己的 log4j 配置在 jboss 中部署的简单 EJB jar

java - 我究竟做错了什么?我一直得到 NaN? (海伦公式)

mysql - 如何使用 spring-data-jpa 对具有持久关系的实体执行 native 查询

mysql - JPA Criteria 查询在子查询中包含多列

java - WFLYJPA0060 : Transaction is required to perform this operation (either use a transaction or extended persistence context)