动态sql拼接求解

Sql: select * from (select results.*,rownum rn from (
      select
        t1.*
      from
        wemall_store t1
      where
        1 = 1
      and t1.store_status = 2
      and t1.deletestatus = 0
          order by t1.addTime desc
) results where rownum <=10) where rn>=0;

com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符

blob.png

但语句在navcat是可以直接执行的,求解


评论区

JFinal

2018-04-05 16:21

在后端通过 getSqlPara(...) 获取到一个 SqlPara 对象,然后调用 SqlPara.getSql() 获取 sql,试验一下这个 sql 是否可以在 navicat 中执行

也可以打开 show sql 在控制台得到 sql ,再去 navicat 中去执行,打开方式为:
arp.setShowSql(true);

JFinal

2018-04-05 16:22

通过代码往往很难看出问题,要调试追踪 sql,还要注意方言正确:
arp.setDialect(new OracleDialect());

nba048

2018-04-07 10:00

@JFinal 非常感谢!已按第一步解决! nice

王子鹏

2019-02-20 13:04

@JFinal 请问是否有设置可以打开sql的传的参数

JFinal

2019-02-20 14:17

@王子鹏 目前不支持该功能,可以参考虑里头的 SqlReporter.java 来做下扩展

王子鹏

2019-02-21 12:29

热门反馈

扫码入社