错误原因:
@ManyToOne(cascade = {CascadeType.REFRESH}, fetch = FetchType.LAZY)
@JoinColumn(name="depart_id")
@NotFound(action = NotFoundAction.IGNORE)
private HumDepartEntity departEntity;
这个异常是在ManyToOne级联操作时遇到,要保存的对象引用了一个未保存的对象,比如我们试图存储一个瞬时状态的对象。也就是说,A和B有关联的话,其中A引用B。如果我们要持久化A对象的话,应该先将其关联的B对象先持久化才可以,否则就会出现这个异常
解决方法:
1、关闭事务,这样对父表的save就会先提交。
2、在@ManyToOne
注解上添加级联设置(cascade = CascadeType.PERSIST)
关于级联属性:
CascadeType.PERSIST
:级联新增(又称级联保存):对order对象保存时也对items里的对象也会保存。对应EntityManager的presist方法。
CascadeType.MERGE
:级联合并(级联更新):若items属性修改了那么order对象保存时同时修改items里的对象。对应EntityManager的merge方法 。
CascadeType.REMOVE
:级联删除:对order对象删除也对items里的对象也会删除。对应EntityManager的remove方法。
CascadeType.REFRESH
:级联刷新:获取order对象里也同时也重新获取最新的items时的对象。对应EntityManager的refresh(object)方法有效。即会重新查询数据库里的最新数据。
CascadeType.ALL
:以上四种都是。
转载至:https://python.iitter.com/other/14345.html