我使用带有Hibernate的JPA Repository作为spring启动应用程序中的数据源。
之前我的数据:
[{“id”:1,“name”:“Not Stack”},{“id”:2,“name”:“Overflow”}]
我使用这些数据进行保存操作:
{ “ID”:1, “名称”: “堆栈”}
然后,当我找到所有()时,它检索到了:
[{“id”:2,“name”:“Overflow”},{“id”:1,“name”:“Stack”},]
这是怎么回事?关于这个问题的任何想法或解决方法?
答案 0 :(得分:4)
findAll()
只返回一个结果列表,该结果列表以数据库提供的顺序返回结果(ResultSet
)。对这些记录进行排序的方式取决于RDBMS,通常是最方便的方式。在这种情况下依赖订单不是一个好主意。
为了保证记录按ID排序,您可以在存储库中创建自己的方法,例如:
// Full query
@Query("SELECT t FROM Type t ORDER BY t.id")
List<T> findAllOrdered();
// Shorthand relying on method naming
List<T> findAllOrderById();
有关方法命名的更多信息,请参阅Spring Data JPA参考中的4.3.2 Query creation。
或者您可以使用findAll(org.springframework.data.domain.Sort)
方法,例如:
repository.findAll(new Sort("id"));
答案 1 :(得分:2)
findAll()只获取所有数据,没有订单说明。如果您希望订购结果,则应使用findAllOrderById()
。