记录Harde学习成长生活的点点滴滴.
« »
2009-08-11
Java

3,183 次浏览

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]);

希望对大家有所帮助

日志信息 »

该日志于2009-08-11 21:01由 harde 发表在Java分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

相关日志 »

2条评论

  1. 说道:

    你的对象里面set进去了一个刚new的对象

    回复

    harde Reply:

    对啊,所以就抛了object references an unsaved transient instance save the transient instance before flushing异常

    回复

发表评论 »

使用新浪微博登陆

返回顶部
分享按钮