问题描述: 备注:刚开始SQL 没有加任何AS 别名
第一页:正常显示
第二页:显示不正常
为什么第一页可以第二页不行,一模一样的SQL没有修改过?
百度查了一下,没什么资料、无法下手。。。
- 看了日志发现第一页域第二页的SQL显示不一样
select TOP(?) from 第一页
WITH query AS (SELECT inner_query.*, ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP) as __hibernate_row_nr__ FROM 第二页
明显不一样的处理逻辑
- select med.* from 都可以显示出来
- 没有办法只能看源码了,经过多次的断点终于发现猫腻了。
org.hibernate.dialect.pagination.SQLServer2005LimitHandler#processSql
-
第一页
2.第二页逻辑
org.hibernate.dialect.pagination.SQLServer2005LimitHandler#fillAliasInSelectClause
org.hibernate.dialect.pagination.SQLServer2005LimitHandler#getAlias
没错这里就是最后结局。。。。
加上 as 别名 就可以了。。。。如果是*号默认就是全部