SSH整合中Hibernate的saveOrUpdate方法失效的问题

        最近做一个ssh整合的crm项目,在使用Hibernate的saveOrUpdate方法保存或更新数据时,出现只保存数据,而不更新数据的现象。

        网上大多数人认为是web.xml配置问题,针对我自己的程序查找发现与web.xml配置无关。

        大家都知道,Hibernate中的对象有3种状态,瞬时状态(Transient)、持久化状态Persistent)和离线状态Detached也叫做脱管状态)。

            这三种状态的区别分别:

                   与session关联的对象处于持久态,是持久化对象;
              与Session没关联,也没有OID的对象处于瞬时状态,是瞬时对象;
              与Session没关联,但有OID的对象处于游离状态,是游离对象。

        Hibernate的save方法操作的是瞬时对象,即对没与session关联,与数据库也没有对应关系的对象就行保存;update方法则是对游离对象进行操作,即将与数据库中有对应关系,但没有与session关联的对象进行更新。

        所以,saveOrUpdate方法在调用时会判断操作对象的状态,若是瞬时对象,则执行save方法;若是游离对象,则执行update方法,而两者的区别在与有无OID。

        故,我在调用action的jsp 页面表单中加入要操作的对象id,当表单提交时,对象id将随提交到后台,就可以实现更新操作。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值