首页
App
&
Coffee
文档
项目
分享
反馈
俱乐部
登录
注册
Sqlserver order by 分页问题(已解决)
伊森
2017-02-17 10:26
SqlServerDialect
中未替换
Order by
语句导致报错,需要将
replaceOrderBy
方法重写
数据库版本:
sqlserver 2014
已解决,参见评论
一楼
项目:
JFinal
评论区
JFinal
2017-02-17 10:43
创建一个 public class MySqlServerDialect extends SqlServerDialect,然后覆盖一下 replaceOrderBy 方法,将 order by 的替换用上,相关代码在源码中都有
回复
JFinal
2017-02-17 10:44
或者你试试在最外层套一个 select *,形如:
paginate(1, 10, "select *", "from (原 sql ) as temp", ....)
回复
伊森
2017-02-17 10:56
@JFinal
谢谢回复,现在用的第一种方法,只是个人建议在版本里修复一下或者在手册中写一下,方便初学者,不过瑕不掩瑜,Jfinal还是很好用。
回复
JFinal
2017-02-17 11:04
@伊森
这个问题其实相当纠结,因为用正则去 replace 掉 order by 语句块无法预料到有些极其复杂的 order by 形式,所以后来这个去掉了,但没想到 sql server 不允许 select count 语句出现 order by
回复
伊森
2017-02-17 11:13
@JFinal
确实根据业务不同会引申出复杂的Sql,从框架的角度想来直接把Exception抛出,让用户自己去根据自己的业务写replaceOrderBy确实已经是好的解决方案了,只是现在用的人都希望无脑,会显得框架不够友好
回复
cfrjxia
2017-02-20 11:21
@JFinal
我同样遇到了这个问题. 请问您说的1. "将 order by 的替换用上"是指什么? 2. "相关代码在源码中都有", 这里说的源码是指码云上的jfinal-master分支吗?
刚接触jfinal,不太懂, 谢谢
回复
JFinal
2017-02-20 11:33
@cfrjxia
将 order by 的替换用上是指 jfinal 2.2 版本中的 replaceOrderBy 中存在的,但在 jfinal 3.0 中被注释掉的代码,这段代码没有删,仅是注释了而已
回复
发送
我要反馈
热门反馈
扫码入社