你使用的hibernate?如果是的话,就把主键方,配置文件中<one-to-mang>中一个属性是权利反转的属性,改为false

解决方案 »

  1.   

    我用的是jpa,我搜了下在JPA中是以mappedBy来表示维护端的,而我不管配置不配置OneToMany(有没有mappedBy),都是这样的错误。
      

  2.   

    原因是缓存导致, 你需要在通过id回去Group前 clear()缓存就可以了。 因为在get前缓存中有Group的缓存对象或者是个没有加载数据的代理对象,而且这个对象呗form提交的数据修改了id,此时通过form传过来的id去get这个Group对象 则直接在缓存中找到了 所以在flush的时候就报修改id的错误了。
    说好的50分哦 哥们!
      

  3.   


    你说的clear缓存在什么地方执行?能否提供一段代码?五十分肯定给的了,不要着急。
      

  4.   

    是你*.hbm.xml映射文件中的属性 type类型设置的和你实例化java对象中的属性的类型不一致了  我今天晚上也遇到这个问题了  搞了好久才找出来的
      

  5.   

    changeAuditDao.clear();
    changeAuditDao.save(changeAudit);
      

  6.   

    第一次回复还有QQ表情啊!!我是参考书籍sql.sql先建表自增ID   AUTO_INCREMENT=30    我预先插入2-29(含头含尾)然后在hibernate程序里手动设置ID为1并添加到1的位置就报这个错误,希望给你做个参照  这回复符合程序员风格
      

  7.   

    今天才发现这个贴子还没结,我最终的解决方案还是根据新的group_id值创建一个对象(或者查找也一样),再赋值给user了。当我把这段代码写入一个基类重复调用后,也不觉得麻烦了。当然这个问题如果有更好的办法我依然会关注,如果找到了我会在我博客里贴出来。但这个贴子太久了,所以结贴了,谢谢各位的回复。