jfinal升级到3.0 出现的分页查询 order by 问题

我现在有这样的SQL语句采用分页查询:

SELECT
  f.id,
  left(f.film_title, 15) film_title,
  f.film_poster_path,
  f.film_year,
  fdp.update_time        film_source_update_time
FROM film f LEFT JOIN (SELECT
                         max(optdate) update_time,
                         film_id
                       FROM film_download
                       GROUP BY film_id) fdp ON f.id = fdp.film_id
WHERE fdp.update_time IS NOT NULL
ORDER BY film_source_update_time DESC;

Model在分页过程中,查询总个数生成totalRowSql:

SELECT count(*)
FROM film f LEFT JOIN (SELECT
                         max(optdate) update_time,
                         film_id
                       FROM film_download
                       GROUP BY film_id) fdp ON f.id = fdp.film_id
WHERE fdp.update_time IS NOT NULL
ORDER BY film_source_update_time DESC

原来使用的是2.2版本,是没有问题的,现在升级到3.0之后系统报错

com.jfinal.plugin.activerecord.ActiveRecordException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'film_source_update_time' in 'order clause'



评论区

JFinal

2017-05-07 19:54

升级到 jf 3.1 即可

jeffson

2017-05-08 11:38

@JFinal
波总,是否可以将总条数的sql语句改写为以下
String countSql = String.format("SELECT COUNT(*) AS count FROM (%s) AS dummy", originalSql);

JFinal

2017-05-08 12:31

@jeffson 这种形式的结果是一样的,没啥区别,计算 totalRowSql 本身就是独立执行的,不需要 as 子句就可以

热门反馈

扫码入社