异常信息:Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: com.xxx.Xxx
简单地说,发生此异常即是一个游离的对象要被持久化(save)时,其ID既要ORM框架为它生成ID值,而此实体的ID却已然有值。
解决的办法很多,笔者是为其实体做一个属性编辑器,在编辑器判断主键ID是否为空且长度是否为0,若是,则置入一个null。在保存前检查一下ID也是一种解决办法。
有时在一对一、一对多保存时,关联方也会存在这种情况,所以关键检查ID字段就可以了。