2012-10-10 100 views
2

我是新來的冬眠。我對標準的setFirstResult方法感到困惑。 從文檔看來,hibernate從給定的數字中返回行。使用Hibernate setFirstResult沒有任何訂貨

由於SQL查詢不能保證沒有order by子句的行的排序,因此在這種情況下如何工作(沒有orderBy子句)? hibernate是否從數據庫中讀取索引信息?

如果我執行相同的SQL查詢多次,順序可能會改變,在這種情況下如何setFirstResult工作?

回答

2

Hibernate無法通過自己的做一些事情。因爲Hibernate查詢最終只能轉換爲Sql

話雖如此,它使用像PostgreSQL的和MySQL會產生像limit ? offset ?查詢底層數據庫的能力。

您可以添加使用addOrder

.addOrder(Order.asc("name")) 
+0

的部分有關自定義命令「在默認情況下它會令通過在主鍵」在這裏是不準確的。 Hibernate不添加隱式排序,返回結果的順序完全取決於底層數據庫。 –

+0

我知道PostgreSQL和MySQL,它使用限制和抵消,但缺乏這些ie。 Oracle數據庫有什麼用途? –

0

你的任務是通過,該功能你是否注意到,如果在同一組數據多次執行並不能保證相同的結果添加一個命令。 setFirstResult在分頁通常使用。除非它通過底層數據庫支持