当前位置: 代码迷 >> J2EE >> EJB3.0保存数据时报错误:org.hibernate.StaleStateException
  详细解决方案

EJB3.0保存数据时报错误:org.hibernate.StaleStateException

热度:357   发布时间:2016-04-22 03:14:21.0
EJB3.0保存数据时报异常:org.hibernate.StaleStateException
这两天在学习EJB3.0,不过碰到了这样一个问题:
  我创建了一个主子关系的实体,StorageOrder和StorageOrderItem,StorageOrderItem中的某些属性关联了其他的实体,比如Product.我的每一个实体的主键都是由程序调用产生的32位String(比如放在默认构造函数中调用),而不是采用的@GeneratedValue注释.StorageOrder到StorageOrderItem是单向一对多的关系(StorageOrder实体中有一个Set保存StorageOrderItem集合).
  现在的问题就在于,我在创建一个新的StorageOrder时插入了两个新的StorageOrderItem,在保存的时候产生了
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1异常,产生的SQL语句顺序先是对StorageOrder的insert操作,然后是两个StorageOrderItem的update操作,而这两个StorageOrderItem都是新的应该用insert操作才对,在网上找了关于这个异常的解决方法,但都是对主键为数据库自动产生的时候,却没有关于主键是由自己设置的String的解决方法,不知道大侠们有没有什么好的方法来解决?
  EJB是部署到JBOSS上的,数据库用的MSSQL.
 

------解决方案--------------------
可以改一下你的EJB主键生成机制,和数据库一致应该就没问题了
------解决方案--------------------
可以改一下你的EJB主键生成机制,和数据库一致应该就没问题了
  相关解决方案