• a different object with the same identifier value was already associated with **(ssh异常转)


     
    Hibernate:a different object with the same identifier value was already associated with ...异常解决

    今天在用框架更新时发现报a different object with the same identifier value was already associated wit此异常
    原因:因为之前已经将该条记录取到了session缓存中,用update(游离态对象)方法时发生错误,一个游离态对象和一个持久态对象,具有相同OID,因此报错。

    解决办法用merge(游离态对象),该方法应该是根据游离态对象的OID,执行select语句,将游离态对象转成了持久化对象,之后update()
    但是我用的是别人的框架持久化层是不能随便修改的..尽量避免去修改内部的定义的接口..
    想了想 是不是自己在action里查了一遍 然后Hibernate:session里就存在了游离对象,那么最后有拿这个对象更新的话就出错。
    然后我用根据传入的对象ID 查出来赋给另一个对象然后 交替属性后 更新新的对象 竟然就可以了..(我也是这样解决的,更新对象之前,先根据ID查询)
    原理不是很懂..但反正是解决了..忽忽

    hibernate2.17中使用insertOrUpdate()方法  hibernate3.0以上使用merge()来合并两个session中的同一对象 
    注:没有尝试,根据他的意思是保存更新的时候重新new一个对象试一下保存应该就可以了
  • 相关阅读:
    webrtc公开课
    webrtc第二篇 聊天室
    webrtc第一篇
    lua53
    setValuesForKeysWithDictionary forUndefinedKey
    xcode 插件
    2016年1月7日 隐藏NavigationBar时的一个坑
    jdbc
    brew gradle
    Openwrt TF Card Auto Mount&Check (4)
  • 原文地址:https://www.cnblogs.com/zhangyue086/p/3711436.html
Copyright © 2020-2023  润新知