问题描述:  备注:刚开始SQL 没有加任何AS 别名

第一页:正常显示

Jpa 原生SQL分页查询“一个别名引发的一场血案”

 

第二页:显示不正常

Jpa 原生SQL分页查询“一个别名引发的一场血案”

 

为什么第一页可以第二页不行,一模一样的SQL没有修改过?

百度查了一下,没什么资料、无法下手。。。

  1. 看了日志发现第一页域第二页的SQL显示不一样

select TOP(?)  from  第一页

 WITH query AS (SELECT inner_query.*, ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP) as __hibernate_row_nr__ FROM   第二页

明显不一样的处理逻辑

  1. select med.*  from 都可以显示出来
  2. 没有办法只能看源码了,经过多次的断点终于发现猫腻了。

org.hibernate.dialect.pagination.SQLServer2005LimitHandler#processSql

 

  1. 第一页

Jpa 原生SQL分页查询“一个别名引发的一场血案”

 

 

    Jpa 原生SQL分页查询“一个别名引发的一场血案”

 2.第二页逻辑

Jpa 原生SQL分页查询“一个别名引发的一场血案”

org.hibernate.dialect.pagination.SQLServer2005LimitHandler#fillAliasInSelectClause

Jpa 原生SQL分页查询“一个别名引发的一场血案”

org.hibernate.dialect.pagination.SQLServer2005LimitHandler#getAlias

Jpa 原生SQL分页查询“一个别名引发的一场血案”

没错这里就是最后结局。。。。

Jpa 原生SQL分页查询“一个别名引发的一场血案”

加上  as  别名  就可以了。。。。如果是*号默认就是全部

 

Jpa 原生SQL分页查询“一个别名引发的一场血案”

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-06-07
  • 2022-12-23
  • 2021-06-07
  • 2022-01-14
  • 2021-11-27
猜你喜欢
  • 2022-01-14
  • 2021-05-08
  • 2022-12-23
  • 2021-07-06
  • 2021-05-29
  • 2021-06-02
  • 2022-12-23
相关资源
相似解决方案