错误信息:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: com.sammyun.entity.Member
我之前的代码和改过的代码:
imUserUtil.newTeacherFriendWithClassPatriarch(addMember);(修改前)
Member twiceMember = memberService.findByUsername(addMember.getUsername());(修改后)
imUserUtil.newTeacherFriendWithClassPatriarch(twiceMember);
原因:
我之前的addMember取出来之后做了update的操作。那我我的这个addMember的hibernate的状态就是游离态,是没有持久化的,而没有持久化的状态实体时不能从hibernate的查询更新什么的。后面的做法就是通过这个尸体查处相对应的实体。那么这两个实体看着貌似属性值尤其id都是一致的(忽略update的属性),但是这两个实体却并不是一个。一定要注意前者为游离态的,后者才是持久化的。
反思:推荐自己看看hibernate的各种状态,我记得四个(尴尬