object references an unsaved transient instance save the transient instance before flushing异常

作者: harde 分类: Java 发布时间: 2009-08-11 21:01

今天做程序时程序报出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]);

希望对大家有所帮助

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

4 条评论
  • 2009-12-02 下午 8:44

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

    1. 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 看完了,试试看能解决问题不

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注