Hibernate 框架分頁出現兩頁資料重複問題

2021-08-30 11:27:49 字數 992 閱讀 1849

表中沒有唯一鍵

create or replace table

( name1 varchar(100),

name2 varchar(100),

qty1 int

)

在hibernate框架中經常會使用到框架本身的分頁查詢功能,下面是查詢表【table】的所有資料,

備註:表【table】沒有【唯一】鍵

string hql = "select * from table";

query query = session.createquery(hql);

query.setfirstresult((page - 1) * rows);

query.setmaxresults(rows);

【轉換sql】

查詢第一頁資料時會由框架本身將hql語句轉為sql指令碼獲取資料

//page: 1 , rows:10

select * from table where rownum < 10

在查詢資料的外面又重新套了一層查詢,在沒有【主鍵】這樣的查詢的結果的順序會重新排列,那麼這一頁的資料就有可能是第一頁出現過的,這樣會導致兩頁資料【重複】的情況

//page:2 , rows: 10

select rownum row_num,a.* from (select * from table) a where row_num>10 and row_num<=20

1. 在表【table】中加上主鍵id

2. 在查詢資料的後面加上排序

select * from table order by name1,name2

Hibernate分頁功能出現資料重複問題

oracle中的分頁機制就是通過rownum函式來實現的,rownum順序號的生成是排序後生成的,例如 select from web user where rownum 0 and rownum 10 order by name 這個排序中使用了name欄位作為排序,但是資料不能保證name是唯一...

Hibernate實現分頁

hibernate提供了乙個支援跨系統的分頁機制,這樣無論底層是什麼樣的資料庫都能用統一的介面進行分頁操作。不用寫oracle專用的3層巢狀是一件多麼幸運的事啊 舉個例子 比如 分頁顯示方法 返回乙個從第n條開始到第m條結束的記錄集合 即每頁顯示m條記錄 param pagehql 動態hql語句 ...

理解hibernate框架

只有足夠的經歷才能更好的理解乙個框架的作用。例如 之前,知道hibernate框架是用來持久化資料的。但覺得用jdbc我就可以實現了,為什麼要使用hibernate框架那麼麻煩呢。直到昨天晚上,有個外包專案。跟我正在做的很一樣,只是資料庫不同。在這種情況下,如果使用hibernate框架作持久化資料...