2012-10-10 48 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在分页通常使用。除非它通过底层数据库支持