伪代码
@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无法对其进行任何处理。合并后,如果持久性上下文中没有数据,则该属性为空。
合并之前是否要从数据库中检索实体?