关于生产环境 线上偶发问题 sql查询无法映射表

(String[] propertitysObject[] valueLogical logic) {
   String sql = String.()(String propertity : propertitys) {
      sql += logic.name() + + propertity + }
   findFirst(sqlvalue)}

image.png

线上偶发  无法绑定表  tableName为空的问题 请问什么原因呢?

报错 Caused by: com.jfinal.plugin.activerecord.ActiveRecordException: The table name: k_user not in your sql.

k_user表是存在的  去掉

(config.)
   checkTableName(modelClasssql)

后面sql 查询拼会没有表名  同样出错

评论区

hxu

2019-07-16 20:05

@JFinal 请教波总

JFinal

2019-07-16 22:40

异常信息中出现了 "not in your sql" 字样,证明你用的 jfinal 版本太老了, 早期的版本对 sql 有检查,会检查 model 查询时,你的 sql 中是否包含了该 model 所对应的 tableName

升到最新版本,按照 jfinal 文档:
https://www.jfinal.com/doc/14-1

如果暂时不升的话,配置一下:
activeRecordPlugin.setDevMode(false);

hxu

2019-07-17 13:27

@JFinal 我这边看了源码 activeRecordPlugin.setDevMode(false); 不会进行checkTableName(modelClass, sql); 但是findByPropertity方法 进行sql拼接的时候 String sql = String.format("select * from %s where 1=1 ", tableName); tableName 还是为空

JFinal

2019-07-17 15:38

@hxu 单步跟踪一下,找到原因

hxu

2019-07-18 10:15

谢谢了
@JFinal 现在最头痛的就是线上出现问题 开发和测试环境没有问题

热门反馈

扫码入社