2011-10-13 35 views
0

我正在執行查詢時添加「DB分頁」,而不是在爲用戶提供結果時添加任務。 問題是每個數據庫引擎都有自己的SQL方法,用於從整個集合中減去一組結果。更精確地說,如果一個人想結果ňN + d使用:Java SQL [限制| rownum ...]統一化API

mysql ---> select X from Y where Z limit N, d 

oracle --> select * (select X, ROW_NUMBER() OVER (ORDER BY Y.colName) from Y where Z) WHERE R BETWEEN N and N+d 

現在我們提供的Oracle & MySQL的支持,但一個永遠無法知道客戶端的請求,所以我想因此我正在尋找一個提供如下功能的庫:

qWithSubset = performLimitationOverQuery(qNoSubset, offset, amount, sortOnSet) 

任何建議都是值得歡迎的。謝謝。

+0

可能的重複[是否有一種可移植的方式來「選擇第一個10 *從T」語義?](http://stackoverflow.com/questions/3400589/is-there-a-portable-way-to-有選擇第一10從T語義) – BalusC

+0

@Icarus鑑於它被標記爲Java,我猜不是。 –

+0

@DaveNewton哈哈哈我猜測,不是......我沒注意java標籤。 – Icarus

回答

0

任何JPA實現,例如Hibernate例如,提供您的代碼和數據庫之間的抽象級別。

公平地說,它不僅僅是處理分頁。但是,如果您傾向於使用數據庫「方言」,則可以查看和/或借用其實施數據庫「方言」來處理分頁,而不會改變您處理數據庫的方式。

+0

好的。謝謝,方言的東西似乎有效。 – ZZiloS