您要读取的数据在系统中不存在,可能已经被删除

问题描述
当我们用实体的主键去查询数据库,返回实体数据时;如用BusinessDataServiceHelper.loadSingle通过pkid去查询数据,在对应的实体表中不存在,就会出现此问题。
原因分析
出现该问题主要原因就是,数据库表中不存在要查找的数据
场景一:
业务代码,查询数据在保存数据之前;因为数据还未持久化
场景二:
前端上有数据展示,然后去查询数据库没有数据,有可能是因为缓存和数据库数据不同步导致的。例如基础资料都是有缓存的,由于不规范的一些操作直接把表里的数据删除了,没刷新基础资料的缓存,就会出现数据不一致
场景三:
多个人同时操作一条数据,前面的操作把数据删除了,后面的操作要去查询该数据
解决方案
例如在代码中查询一条数据库不存在的数据,报错


对应的物理表,不存在需要查询的数据

如果是平台功能报类似的错误,不知道如何定位物理表,可以通过把sql打印到控制台:

sql输出到控制台:
修改启动类kd.bos.debug.mservice.DebugServer
① 将System.setProperty(“db.sql.out”, “false”); 修改为System.setProperty(“db.sql.out”, “true“);
② 在JettyServer.main(null);前添加
DB.setSqlLogger(new SqlLogger() {
@Override
public void log(String sql, Object… arg1) {
Syst
您要读取的数据在系统中不存在,可能已经被删除
问题描述当我们用实体的主键去查询数据库,返回实体数据时;如用BusinessDataServiceHelper.loadSingle通过pkid去查询数据,在对应的实体表...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



