`
fantasy0407
  • 浏览: 6064 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernat异常Row was updated or deleted by another transaction

阅读更多

Could not synchronize database state with session

org.hibernate.StaleObjectStateException:

Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.introns.model.goods.NetGoods#402880d31fa720c1011fa72605690001]

说明操作的对象应用了乐观锁;version

错误原因:当在进行操作时,当前version版本与DB中version版本不一致;

             A:另外有人对此记录进行了相似操作;

             B:自己操作有误: 

             例如通过编辑页面来修改一条记录时:传回来的form对象中version为空,然后又指导些form中的值copy到相应的实体对象中;--此时此实体对象中的version也为空;当update时,version不一致就会出错;

         解决:     A:用form传数据时,把version也传\过来;

                      B:从DB中把version查出来,赋给实体对象;再更新;


Row was updated or deleted by another transaction
timestamp的字段一定要有值,并且是日期值,否则当hibernate更新这个字段没有值的那条记录时,会出现如下错误

org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.test.admin.domain.user#1]

当选择assigned生成器时,除非有一个version或timestamp属性,或者你定义了 Interceptor.isUnsaved(),否则需要让Hiberante使用 unsaved-value="undefined",强制Hibernatet查询数据库来确定一个实例是瞬时的(transient) 还是脱管的(detached)。

<timestamp name="lastUpdate" column="user_lastupdate" generated="never" />

never指不从数据库中产生。

Hibernate 疑难异常及处理

1、a different object with the same identifier value was already associated with the session。

  错误原因:在hibernate中同一个session里面有了两个相同标识但是是不同实体。

  解决方法一:session.clean()

PS:如果在clean操作后面又进行了saveOrUpdate(object)等改变数据状态的操作,有可能会报出"Found two representations of same collection"异常。

  解决方法二:session.refresh(object)

PS:当object不是数据库中已有数据的对象的时候,不能使用session.refresh(object)因为该方法是从hibernate的session中去重新取object,如果session中没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下。

  解决方法三:session.merge(object)

PS:Hibernate里面自带的方法,推荐使用。

2、Found two representations of same collection

  错误原因:见1。

  解决方法:session.merge(object)

以上两中异常经常出现在一对多映射和多对多映射中

 

分享到:
评论

相关推荐

    hibernate错误汇总

    错误十:Exception in thread "main" org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect) 错误原因:这个异常通常发生在并发...

    Hibernate 删除出现异常的解决方案.doc

    在使用Hibernate进行数据库操作时,有时会遇到一种异常情况,即在尝试删除一个对象时,系统抛出"deleted object would be re-saved by cascade (remove deleted object from associations)"的异常。这个异常通常发生...

    hibernate.properties

    #hibernate.transaction.manager_lookup_class org.hibernate.transaction.WebSphereTransactionManagerLookup #hibernate.transaction.manager_lookup_class org.hibernate.transaction....

    Hibernate的高级查询

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了强大的对象关系映射(ORM)功能,使得在数据库操作上可以采用面向对象的方式。当我们需要进行更复杂的数据库查询时,Hibernate提供了丰富的...

    EF(EntityFramework) 插入或更新数据报错的解决方法

    Entities may have been modified or deleted since entities were loaded. See ...

    微软内部资料-SQL性能优化3

    In our example, if one transaction (T1) holds an exclusive lock at the table level, and another transaction (T2) holds an exclusive lock at the row level, each of the transactions believe they have ...

    Hibernate 体系结构与工作原理.txt

    ### Hibernate 体系结构与工作原理 #### 一、概述 Hibernate 是一款开源的对象关系映射(Object Relational Mapping,简称 ORM)框架,它为 Java 应用程序提供了一种将对象模型与数据库模型进行映射的方式,使得...

    Hibernate问题解决

    ### Hibernate问题解决方案 #### 1. 表连接的查询,当表中有外键连接其它表时,如何能一次查出所有的内容? 对于这种情况,可以通过**HQL查询**或**SQL查询**来一次性获取所有相关联的数据。下面详细介绍两种解决...

    文件恢复工具

    Empowered by the new unique data recovery technologies, it is the most comprehensive data recovery solution for recovery files from FAT12/16/32, NTFS, NTFS5 (created or updated by Windows 2000/XP/...

    hibernate的包

    10. **实体生命周期**:Hibernate定义了对象的生命周期,包括瞬态(Transient)、持久化(Persistent)、托管(Managed)、脱管(Detached)和已删除(Deleted)等状态,帮助开发者理解对象在整个应用中的状态变化。...

    hibernate经典源码

    8. **实体状态管理**:Hibernate将实体的状态分为瞬时(Transient)、持久化(Persistent)、脱管(Detached)和已删除(Deleted),理解这些状态及其转换,有助于避免常见的数据问题。 9. **批量操作**:批量插入...

    hibernate in action

    7. **实体生命周期管理**:Hibernate定义了五个生命周期状态(Transient、Persistent、Detached、Deleted、Managed),并在不同状态下自动进行状态转换,简化了对象状态的管理。 8. **关联映射**:包括一对一、一对...

    SQL Inserted和deleted详解

    ### SQL Inserted 和 Deleted 表详解 在 SQL Server 中,`Inserted` 和 `Deleted` 是两个特殊的表,它们主要用于触发器(Trigger)中。当执行 INSERT、UPDATE 或 DELETE 操作时,系统会自动创建这两个虚拟表,并...

    Intro to the Alfresco Web Script Framework.pdf

    The calculation was triggered every time a rating was created or deleted. We used server­side JavaScript to create rating objects to test out our behavior but there wasn't an interface available ...

    deleted 文件deleted deleted

    相信剖析MATLAB工程应用技术。M文件均经过验证,非常好用。

    Dont Download, it will be deleted

    Dont Download, it will be deleted

    wechat-deleted-friends-master

    《微信好友恢复:深入解析“wechat-deleted-friends-master”项目》 在我们的日常生活中,微信作为一款全球广泛使用的社交应用,已经成为了我们联系亲朋好友、进行商务沟通的重要工具。然而,有时由于误操作或者...

    psp学习资料

    Updated the PSP0 tutorial to better explain how to mark an assignment complete. • The PSP2 was updated to accurately describe how to complete defect planning with the SEI Access student workbook....

    Hibernate相关资料

    《深入理解Hibernate:核心查询语言HQL》 Hibernate作为Java领域中的一款强大的对象关系映射框架,极大地简化了数据库操作。其核心查询语言HQL(Hibernate Query Language)为开发者提供了面向对象的查询方式,使得...

    Recover 4 all Pro V2.26

    They can be saved to another drive with a few mouseclicks (see Searching deleted files for step by step instructions). Recover4all?only lists folders that contain deleted files. Normal nondeleted ...

Global site tag (gtag.js) - Google Analytics