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了下,说法五花八门,基本上都不属于能解决我的问题的…
仔细检查源代码,终于发现了问题
看下面的语句
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]);
希望对大家有所帮助
刘
2009-12-02 下午 8:44
你的对象里面set进去了一个刚new的对象
harde
2009-12-04 下午 11:36
对啊,所以就抛了object references an unsaved transient instance save the transient instance before flushing异常
吃啊吃啊
2012-05-22 上午 11:52
好强大啊 解决了 背景音乐不错
追风
2012-06-04 下午 5:38
thank you 看完了,试试看能解决问题不