欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI

页面树结构

欢迎使用普元文档库

Skip to end of metadata
Go to start of metadata

【问题】

普元 EOS Platform7.6 启用乐观锁,调用deleteEntityBatch(),删除过程报错:

Caused by: ErrCode: 24000045
Message: 删除一批记录失败. 事务回滚.
 at com.eos.foundation.database.DatabaseUtil.deleteEntityBatch(DatabaseUtil.java:475)
 ......
 at com.primeton.engine.core.impl.process.BLProxy.invoke(BLProxy.java:223)
 at com.primeton.engine.component.impl.OperationAccessor.invoke(OperationAccessor.java:112)
 at com.primeton.engine.component.impl.OperationAccessor.invoke(OperationAccessor.java:80)
 at com.primeton.ext.engine.component.Operation.invoke(Operation.java:100)
 at com.primeton.engine.component.impl.LogicCompoment.invoke(LogicCompoment.java:183)
 ......
 ... 40 more
Caused by: ErrCode: 14101011
Message: 不存在的行(Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.primeton.eos.newdataset.test#66])
 at com.primeton.das.entity.impl.exception.DASExceptionHelper.convert(DASExceptionHelper.java:132)
 at com.primeton.das.entity.impl.DASSessionImpl.deleteEntityBatch(DASSessionImpl.java:354)
 at com.eos.foundation.database.DatabaseUtil.deleteEntityBatch(DatabaseUtil.java:469)
 ... 60 more
Caused by: com.primeton.das.entity.impl.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction
(or unsaved-value mapping was incorrect): [com.primeton.eos.newdataset.test#66]

【解答】

一条记录删除失败,整个事务回滚,和hibernate的两种异常模式有关:

1、乐观锁抛异常模式,批量操作异常中断;

2、不抛出异常模式下,批量操作会忽略异常,不会中断。

若是不希望出现异常的时候,循环操作终止,可考虑自行封装批量删除功能