首页 > 解决方案 > 我无法使用 Hibernate 和 Spring Boot 按 Instant 订购

问题描述

我想从表中检索 10 个最近更新的实体。该模型有一个

@LastModifiedDate
@Column(name = "updated_at")
private Instant updatedAt;

因此,我的方法是有一个存储库方法,如

findTop10ByOrderByUpdatedAtDesc();

它被翻译成类似的东西

select [bunch of properties and so on] order by model0_.updated_at desc limit ?

此查询确实返回 10 个元素。但是,结果没有排序。我也找不到任何错误消息或警告。由于该项目使用休眠,因此 Instant 在 mySQL DB 中作为 TimeStamp 持久保存。序列化和反序列化工作正常。

我已采取的步骤:

  1. 通过不同的属性排序来检查排序原则上是否有效:它确实
  2. 使用 EntityManager 中的构建器手动构建查询:同样的问题
  3. 使用 @Query 注释手动构建查询:同样的问题

似乎一切正常,除了结果没有排序。我知道 JPA 不支持 Instants,但是 Hibernate 添加了这种支持。我正在使用 Spring Boot 2.0.3、Hibernate 5.6.0.Final 和一个 mySQL DB。

有什么想法,可能有什么问题,或者只是不支持使用休眠对 Instant 进行排序?

PS:如您所见,这是我的第一篇 stackoverflow 帖子。随时告诉我,如何改进我的问题。

标签: javaspring-boothibernatejpaspring-data-jpa

解决方案


推荐阅读