伪代码

     @Entity
     class User
        @Id
        ....
         @ManyToOne
        @JoinColumn(name = "ID_TP_CLASS", insertable = false, updatable = false)
        protected StudentClass studentCLASS;
        ....

User user = entity.merge(user);


此代码之后,用户实例将重置为StudentClass实例。
合并之前,studentClass实例充满值,合并之后,studentClass实例存在,但studentClass内的值为null
谁能解释我为什么会这样?

最佳答案

根据文档:


将给定实体的状态合并到当前持久性中
上下文。

返回:状态被合并到的托管实例


您已将StudentClass标记为不可插入且不可更新,因此merge无法对其进行任何处理。合并后,如果持久性上下文中没有数据,则该属性为空。

合并之前是否要从数据库中检索实体?

09-11 20:16