• Hibernate更新数据报错:a different object with the same identifier value was already associated with the session: [com.elec.domain.ElecCommonMsg#297e35035c28c368015c28c3e6780001]


    使用hibernate更新数据时,报错

     Struts has detected an unhandled exception:
    
               Messages:    
               a different object with the same identifier value was already associated with the session: [com.elec.domain.ElecCommonMsg#297e35035c28c368015c28c3e6780001]
               a different object with the same identifier value was already associated with the session: [com.elec.domain.ElecCommonMsg#297e35035c28c368015c28c3e6780001];
               nested exception is org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: 
               [com.elec.domain.ElecCommonMsg#297e35035c28c368015c28c3e6780001]

    代码如下:

    /**
         * @Name  saveElecCommonMsg
         * @Description: 保存运行监控表的数据
         * @author kj
         * @version: V1.00
         * @create Date: 2017-05-21
         * @Parameters: saveElecCommonMsg:VO对象 
         * @return 无
         * 此处需要保存或者更新,要加上事务
         */
        @Override
        @Transactional(readOnly=false)
        public void saveElecCommonMsg(ElecCommonMsg elecCommonMsg) {
    //        1.查询数据库运行监控表的数据,返回List,用来判断数据是否存在
            List<ElecCommonMsg> list = elecCommonMsgDao.findCollectionByConditionNoPage("", null, null);
            //存在就更新
            if(list != null && list.size() > 0 ){
           
                ElecCommonMsg cmg = list.get(0);
                elecCommonMsg.setComID(cmg.getComID());
                elecCommonMsg.setCreateDate(new Date());
                elecCommonMsgDao.update(elecCommonMsg);
                }
            }

    原因是:使用update更新(Session中不允许出现2个相同的OID),所以此处改用 使用快照进行更新

     

    /**
         * @Name  saveElecCommonMsg
         * @Description: 保存运行监控表的数据
         * @author kj
         * @version: V1.00
         * @create Date: 2017-05-21
         * @Parameters: saveElecCommonMsg:VO对象 
         * @return 无
         * 此处需要保存或者更新,要加上事务
         */
        @Override
        @Transactional(readOnly=false)
        public void saveElecCommonMsg(ElecCommonMsg elecCommonMsg) {
    //        1.查询数据库运行监控表的数据,返回List,用来判断数据是否存在
            List<ElecCommonMsg> list = elecCommonMsgDao.findCollectionByConditionNoPage("", null, null);
            //存在就更新
            if(list != null && list.size() > 0 ){
                ElecCommonMsg ecg = list.get(0);
                ecg.setStationRun(elecCommonMsg.getStationRun());
                ecg.setDevRun(elecCommonMsg.getDevRun());
                ecg.setCreateDate(new Date());

              }else{//否则就保存
                    elecCommonMsg.setCreateDate(new Date());
                     elecCommonMsgDao.save(elecCommonMsg);
               }
           }

  • 相关阅读:
    无线渗透(六)WPS、伪造AP
    无线渗透(五)COWPATTY 破解密码
    无线渗透(四)WPA攻击
    无线渗透(一)密钥交换
    metsploit 渗透测试指南
    本地提权汇总
    电子取证-活取证2
    如何利用Python网络爬虫抓取微信好友数量以及微信好友的男女比例
    如何在Centos官网下载所需版本的Centos——靠谱的Centos下载教程
    如何利用Python词云和wordart可视化工具对朋友圈数据进行可视化展示
  • 原文地址:https://www.cnblogs.com/taiguyiba/p/6884356.html
Copyright © 2020-2023  润新知