表中沒有唯一鍵
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框架作持久化資料...