【问题标题】:How update operation works in hibernate?更新操作如何在休眠中工作?
【发布时间】:2011-10-04 03:07:35
【问题描述】:

根据hibernate文档,下面是更新操作的定义

void update(Object object) 抛出 HibernateException 使用给定分离实例的标识符更新持久实例。如果存在具有相同标识符的持久实例,则会引发异常。如果关联与cascade="save-update" 映射,则此操作级联到关联实例。

我对语句如果存在具有相同标识符的持久实例,则抛出异常。有疑问。我认为当它说如果存在具有相同标识符的持久实例时,这意味着如果会话(我们在其中进行更新操作)已经包含具有相同标识符的持久实例,则会引发异常。但是如果二级缓存中包含相同标识符的持久化实例,更新操作会更新对象,不会抛出异常对吧?

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

    不,该语句讲述的是 Session,而不是二级缓存。二级缓存在会话工厂级别工作,只要会话工厂处于活动状态,它就存在。如果对象与会话(不是二级缓存)附加了相同的标识符,那么只会抛出异常。如果没有,那么它将更新数据库中的对象以及二级缓存。

    【讨论】:

      【解决方案2】:

      同意。如果具有相同标识符的实例在二级缓存中,则更新不应引发异常。

      您突出显示的句子不是很清楚,但我认为您的假设是正确的。或许您可以在http://jboss.org 论坛上发表评论,看看他们是否可以澄清措辞,甚至可以改进它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 2012-07-16
        • 1970-01-01
        • 2012-08-17
        • 1970-01-01
        • 2010-11-05
        相关资源
        最近更新 更多