object references an unsaved transient instance save the transient instance before flushing异常
今天做程序时程序报出object references an unsaved transient instance save the transient instance before flushing异常
网上Google了下,说法五花八门,基本上都不属于能解决我的问题的…
仔细检查源代码,终于发现了问题
看下面的语句
1 2 3 4 5 6 7 8 9 10 11 12 | Set pmsSet = null; pmsSet = new HashSet(); PermissionInfo pms = null; //叠代权限 for (int i=0;i<permissions.length;i++) { pms = new PermissionInfo(permissions[i]); pmsSet.add(pms); } //设定权限 status.setPermissions(pmsSet); statusdao.save(status); |
发现问题没有,pms = new PermissionInfo(permissions[i])
这里我是new了一个新的Permission
之后我把这个新的Permission添加到了status的Permission集合里
之后调用save方法保存status
很明显,permission没有被保存就被添加到了status的permissions集合中
解决方法很简单,在保存status之前,先保存permission
(注:我的项目中status与permission是多对多关系)
写在后面:
问题解决了,可事实上我的问题不是这么解决的,因为我的想法是从数据库直接调用的….
我不知道怎么就写成new了….我项目的解决代码:pms = pmsdao.findById(permissions[i]);
希望对大家有所帮助

2条评论▼