首页 > 解决方案 > Spring Data REST:无法按 LocalDateTime 字段排序

问题描述

我正在尝试使用PagingAndSortingRepository扩展接口对 get 查询的结果进行排序,在我尝试按 type 的字段排序之前,一切正常LocalDateTime

我检查了日志,当我使用这个字段时,查询只是忽略排序并且没有任何 order by 子句。

你可以在 GitHub 上找到演示。

代码

模型:
@Entity
@Table(name = "simple_users")
@DynamicInsert
@DynamicUpdate
public class SimpleUser implements Serializable
{
    private static final long serialVersionUID = 1L;

    // Columns
    protected Long id;
    protected String username;
    protected LocalDateTime createdAt;
    //...

    // Constructors
    public SimpleUser() { /** Default copy constructor */ }
    //...

    // Getters
    @Id
    @Column(name = "id", updatable = false)
    @JsonProperty("id")
    public Long getId () { return this.id; }

    @Column(name = "username")
    @JsonProperty("username")
    public String getUsername () { return this.username; }

    @Column(name = "created_at")
    @JsonProperty("created_at")
    public LocalDateTime getCreatedAt () { return this.createdAt; }
    //...
}
界面:
@RepositoryRestResource(collectionResourceRel = "simple-users", path = "simple-users")
public interface SimpleUserInterface
    extends PagingAndSortingRepository<SimpleUser, Long>
{}
网址:
http://localhost:8080/simple-users?page=0&size=10&sort=created_at,desc

更新1:

我已将JsonProperty字段名称从更改created_atjjaa(任意名称),问题已解决;但是我更改了它jj_aa(中间有下划线的任意名称),问题又出现了。用下划线和排序命名json属性似乎有问题。

如果有人能告诉我为什么会发生这种情况以及最好如何解决这个问题,我将不胜感激,因为更改这么多名称以避免下划线意味着对后端和前端进行大量重构。

标签: javaspring-data-rest

解决方案


推荐阅读