首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate - Batch update从update返回意外行数:0实际行数:0预期行数:1

Hibernate - Batch update从update返回意外行数:0实际行数:0预期行数:1
EN

Stack Overflow用户
提问于 2010-04-30 16:11:15
回答 37查看 344.7K关注 0票数 171

我得到下面的hibernate错误。我能够确定导致问题的功能。不幸的是,函数中有几个DB调用。我找不到导致问题的行,因为hibernate会在事务结束时刷新会话。下面提到的hibernate错误看起来像是一个一般性错误。它甚至没有提到哪个Bean导致了这个问题。有人熟悉这个hibernate错误吗?

代码语言:javascript
运行
复制
org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
        at org.hibernate.jdbc.BatchingBatcher.checkRowCount(BatchingBatcher.java:93)
        at org.hibernate.jdbc.BatchingBatcher.checkRowCounts(BatchingBatcher.java:79)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:142)
        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransacti
onManager.java:500)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManag
er.java:473)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(Transaction
AspectSupport.java:267)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
EN

Stack Overflow用户

发布于 2015-08-25 18:03:43

我也面临着同样的问题。代码在测试环境中工作。但它不能在登台环境中工作。

代码语言:javascript
运行
复制
org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 3; expected: 1

问题是该表对testing DB表中的每个主键都有一个条目。但在staging DB中,同一主键有多个条目。(问题是在staging DB中,表没有任何主键约束,而且有多个条目。)

所以每次更新操作都会失败。它尝试更新单个记录,并期望更新计数为1。但由于表中有3条记录对应于同一主键,因此结果更新计数为3。由于预期更新计数和实际结果更新计数不匹配,因此抛出异常并回滚。

之后,我删除了所有具有重复主键的记录,并添加了主键约束。它工作得很好。

代码语言:javascript
运行
复制
Hibernate - Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1

实际行数:0 //表示找不到要更新的记录

update: 0 //表示找不到记录,因此不进行任何更新

期望值:1 //表示数据库表中至少有1条带键的记录。

这里的问题是,查询试图更新某个键的记录,但hibernate没有找到具有该键的任何记录。

票数 9
EN
查看全部 37 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2743130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档