详细异常信息如下:
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)
不注意的话,还真的有点无所适从,Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1这个异常是由于主键设置为自增长,而在我们插入记录的时候设置了ID的值导致的。看下我的Hibernate映射文件中ID的定义:
……
我的Service实现类中对应方法如下所示:
public void addTeacher(Teacher t, int roleid, int orgid)throws MyException {
try {
t.setRole(DAOFactory.getRoleDAO().load(roleid));
t.setOrg(DAOFactory.getOrgDAO().load(orgid));
DAOFactory.getTeaDAO().saveOrUpdate(t);
} catch (DAOException e) {
if(logger.isWarnEnabled()){
logger.warn("", e);
}
throw new MyException();
}
}
或者是编辑的时候,id没有赋值!
分享到:
相关推荐
`JdbcTemplate`的`batchUpdate`方法就是用来实现这样的功能,它可以批量执行更新语句,如INSERT、UPDATE或DELETE。 `batchUpdate`方法的基本使用如下: ```java int[] result = jdbcTemplate.batchUpdate( ...
sqlhelper工具,batchupdate方法
安装 pip3 install mysql_batchUPDATE示例您可以使用可用的模式运行此示例以下示例与以下更新相同: UPDATE batch_test SET date = NOW() WHERE number > 0 . 2 AND date is NULL ; 这等效于以20行为批处理此更新: ...
在MyBatis中,批量更新(batch update)是一种提高数据库操作效率的重要手段,尤其是在处理大量数据更新时。这里我们将详细探讨如何在Oracle和MySQL数据库中使用MyBatis进行批量更新。 1. **Oracle数据库的批量更新...
**问题描述**:执行Hibernate查询语句时,系统提示`Unknown column 'notice0_.myPublishDate' in 'field list'`错误。 **可能原因**:该错误表示Hibernate尝试从数据库中查询一个不存在的字段,通常是由于实体类...
标题"Acount_batch.rar_acout_batch"暗示我们正在处理一个与账户管理和批量处理相关的软件工具,其核心是一个批处理脚本(Acount_batch.bat)。批处理是Microsoft Windows操作系统中的一种脚本编写方式,允许用户...
"Batch CIA 3DS Decryptor.zip" 是一个专门用于批量处理CIA转CCI的工具包,它包含了所需的所有组件。 首先,我们来看一下这个压缩包内的文件: 1. **Batch CIA 3DS Decryptor.bat**:这是一个批处理脚本,用户可以...
executor.update("test.batchUpdate", item); } executor.executeBatch(); return null; } } ); } } catch (Exception e) { // 处理异常 } ``` 5. **注意事项**: - 确保数据库驱动支持批量更新功能。 -...
The Definitive Guide to Spring Batch takes you from the “Hello, World!” of batch processing to complex scenarios demonstrating cloud native techniques for developing batch applications to be run on...
word-count-spring-batch-partitioning 使用 Spring Batch 在 PDF 文件中实现计数词遵循 Master/Slave 模型主/从模型字数统计算法设置、构建和运行初始化数据库创建用于存储 word-count 和 word-count-repository 的...
**批量归一化(Batch Normalization):加速深度网络训练** 在深度学习领域,Batch Normalization是一种被广泛采用的技术,其主要目标是通过减少内部协变量漂移(Internal Covariate Shift),来加速神经网络的训练...
【Spring Batch简介】 Spring Batch是Spring框架的一个模块,专门用于处理批量处理任务。它提供了一套强大、可扩展且易用的工具,用于处理大量数据的读取、处理和写入操作。Spring Batch的设计目标是解决企业级批量...
function SendSimpleSMS(const usernamepassword:string;to_: ArrayOfString;fromtext: string; const isflash: Boolean): ArrayOfString;function SendSimpleSMS2(const... const count: Integer): ArrayOfMessagesBL;
本主题主要关注批量决策树(Batch Decision Tree)的计算及其在影像数据中的应用。 决策树算法基于一系列规则对数据进行分割,通过构建树状结构来做出预测或决策。在遥感领域,决策树可以用来解析影像数据,如识别...
《批量DOC转CHM生成器:Batch DOC TO CHM Generator v2009.1.106.1341》 在信息技术领域,文档的格式多种多样,每种格式都有其特定的用途和优势。例如,DOC是Microsoft Word的默认文档格式,广泛用于文本编辑和排版...
print("Error during batch update: \(error)") } } ``` 四、与常规更新比较 常规更新通常涉及加载对象到内存,修改属性,然后保存回磁盘。这种方法在处理少量数据时是可行的,但当数据量大时,内存消耗和效率...
Byte 0: Flag – 0x00 Byte 1: Resource Type – 0x07 (Key) Byte 2-3: DBID – 0x0005 Byte 4-7: ObjectID – 0x 75D7831F (1977058079) Byte 8-9: IndexID – 0x0001 Byte 10-16: Hash Key value – 0x 02014F0...
Batch,Batch,Batch":What does it really mean? 对渲染中dc的消耗的讲解
从给定的文件信息来看,本文主要涉及S88批处理控制的知识,并且是从使用者的视角来探讨。S88批处理控制标准由国际测量和控制学会(ISA)提出,旨在提供一个通用的批处理控制系统设计、实施和操作的框架,主要被应用...
一个把指定目录下所有windows更新文件自动安装的小工具,省着自己一个个去点更新文件了,这个软件比批处理文件好的一点就是批处理文件还要手动去添加路径和文件,这个不用制定一个目录后自动查找系统还没有安装过的...