您的位置:首页 > 其它

Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

2016-07-13 10:41 399 查看
今天在使用Hibernate的时候,碰到这样一个异常:

Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

详细异常信息如下:

Exception in thread "main" org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61)

at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46)

at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:24)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2403)

at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607)

at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)

at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)

at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)

at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)

at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)

at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)

at model.xgb.bo.impl.ManagerServiceImpl.main(ManagerServiceImpl.java:709)

Hibernate: select role0_.ID as ID5_0_, role0_.NAME as NAME5_0_ from ROLE role0_ where role0_.ID=?

Hibernate: select org0_.ID as ID2_1_, org0_.LAYER as LAYER2_1_, org0_.NAME as NAME2_1_, org0_.ORG_ID as ORG4_2_1_, org1_.ID as ID2_0_, org1_.LAYER as LAYER2_0_, org1_.NAME as NAME2_0_, org1_.ORG_ID as ORG4_2_0_ from ORG org0_ left outer join ORG org1_ on org0_.ORG_ID=org1_.ID
where org0_.ID=?

Hibernate: update TEACHER set PASSWORD=?, NAME=?, ROLE_ID=?, ORG_ID=? where ID=?

2008-11-6 16:16:22.796::org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:301)::ERROR::Could not synchronize database state with session

org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

at org.hibernate.jdbc.Expectations$BasicExpectation.checkBatched(Expectations.java:61)

at org.hibernate.jdbc.Expectations$BasicExpectation.verifyOutcome(Expectations.java:46)

at org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:24)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2403)

at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:2307)

at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:2607)

at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:92)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)

at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)

at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)

at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)

at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)

at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)

at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)

at model.xgb.bo.impl.ManagerServiceImpl.main(ManagerServiceImpl.java:709)

发现异常:

org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count:

0; expected: 1

我用的是mysql数据库。

因为我在java中保存对象时采用了指定key的方式,而数据库中采用了autoinc。。

所以这里应该把autoinc去掉。并把相应的hbm.xml中的key指定方式修改为:assigned而非原先的identity。。。。

收藏于 2011-04-09
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: