2016-12-02 16:41

@静静滴疯 也就是说你的 postgresql 不支持双引号对吧? 解决办法极其简单
1:创建一个public class MyPostgresqlDialect extends PostgresqlDialect,将父类的所有代码 copy 进来,然后将双引号去掉

2:arp.setDialect(MyPostgresqlDialect());

这个问题,可能是你的 postgresql 配置问题,默认是支持双引号的

2016-12-02 16:39

关于业务层拦截器,AppConfig 中配置是指配置全局拦截器,如果你不需要全局拦截器则不需要,这一条与控制层拦截器也是一样的。第二条与控制层拦截器是一样的。只有第三条是业务层独有的,需要对被拦截的类进行一下增强,控制层拦截器是自动增强的,不需要 Duang

2016-12-02 16:37

把这条 sql copy出来,放在控制台能否被正确执行?

2016-12-02 16:36

年底有三个项目着急交付,周末有 jfinal 2.3 要开发,暂时顾不上社区,社区上线马上快半年了,连 jfinal 一万多人的 qq 群都没通知过,想想还有哪位站长会能做得出来

2016-12-02 16:31

批量删早就有了: Db.update("delete from table whre ...", ?, ?, ?) 一行代码搞定

2016-12-02 14:36

@光光哥 单步调试一下,看程序具体的走向,很可能是某个拦截器中有 try catch 之类的吃掉了异常

2016-12-02 13:33

@静静滴疯 方言是对应于某个 ActiveRecordPlugin,而 dataSource 也是对应于某个 ActiveRecordPlugin,对应关系需要使用 configName 来做,在创建 ActiveRecordPlugin 时需要为其指定一个 configName

2016-12-02 13:31

本质就是一个方言设置问题,仔细看下手册

2016-12-02 12:47

@静静滴疯 截图中的字符是 "`" 而不是 "'" ,注意看一下,终级解决方案是单步调试程序,看一下 batchSave() 方法内部用的 Config 对象中的 dialect 到底是什么类型,一目了然

2016-12-02 12:27

不是字符 "'" 而是字符 "`",这个字符是键盘数 1 左边的按钮上的字符,这个是 mysql 专用字符,已经证明了你用的是 mysql dialect,需要改成 PostgreSqlDialect

2016-12-02 12:26

@静静滴疯 看了一下异常,很明显你是将 postgresql 的方言设置成了 mysql 方言

2016-12-02 12:21

多数据源情况,需要为不同数据源设置不同的方言,例如:
dsSqlServer.setDialect(new SqlServerDialect());
pg.setSetDialect(new PostgreSqlDialect());

这样在使用 Db.use(...) 切换到不同的数据源之后, sql 也会被调整

2016-12-02 11:26

还有一种情况注意一下,如果前方有拦截器在拦截请求以后停止了后续调用,则后续拦截器也不会被执行

2016-12-02 11:25

在此拦截器里面添加一个断点,确保是执行的

2016-12-02 10:43

注意看一下这个方法上的 API 文档:
Batch save records using the "insert into ..." sql generated by the first record in recordList. Ensure all the record can use the same sql as the first record.

这个方法用于批量 save 记录,所使用的 sql 是依赖于你的第一个 record 对象来的,而不需要手工提供 insertSql,第一个参数由 insertSql 改为 tableName 即可:
Db.use("post").batchSave("tb_jan_mst", list, num);