首页 > 解决方案 > Spring Data Rest 嵌套属性排序与 JsonUnwrapped

问题描述

所以,我有这个类,使用@EmbeddedId@JsonUnwrapped注释

@Entity
class Order {
    @EmbeddedId @JsonUnwrapped
    private OrderPK pk;
    private String field1;
    private String field2;
    //...getters, setters
}

这是主键类

@Embeddable
class OrderPK implements Serializable {
    private String orderNumber;
    private String company;
    //...getters, setters
}

我想让 Spring Data REST 排序将 PK 类中的字段视为顶级而不是嵌套。基本上,我想使用这个:.../orders?sort=orderNumber,desc,而不是.../orders?sort=pk.orderNumber,desc. 我在文档中找不到任何方法来做到这一点。

标签: javajacksonspring-data-jpaspring-data-rest

解决方案


如果您使用该@EmbeddedId选项来实现您的复合键,您将无法再实现您的目标。原因是 EmbeddedId 类的底层属性不能作为平面参数取出。

请注意,这并非@JsonUnwrapped旨在执行该任务。

您可以使用以下选项而不是 @EmbeddedId 来实现您的目标。

  • 使用@IdClass. 按照这个例子

推荐阅读