【问题标题】:Sort feature in association endpoint in Spring Data RestSpring Data Rest 中关联端点中的排序功能
【发布时间】:2017-07-03 06:42:32
【问题描述】:

我有以下两个资源,以及它们的关联;

@Table(name = "Item")
@Data
@Entity
public class Item {

    @ManyToOne
    @JoinColumn(name = "fk_wrapper")
    private Wrapper wrapper;

    @Id
    @GeneratedValue
    private String id;

    private Integer someValue;
}

和;

@Table(name = "Wrapper")
@Data
@Entity
public class Wrapper {

    @Id
    @GeneratedValue
    private String id;

    @OneToMany(cascade = CascadeType.ALL)
    @JoinColumn(name = "fk_wrapper")
    private List<Item> items;

    private String someField;
}

然后,首先,我创建一个Wrapper

POST http://localhost:8080/wrappers/
{
    "someField": "asd"
}

http://localhost:8080/wrappers/1创建,然后我创建两个Item,链接到这个Wrapper

POST http://localhost:8080/items/
{
    "someValue": "5",
    "wrapper": "http://localhost:8080/wrappers/1"
}

&

POST http://localhost:8080/items/
{
    "someValue": "7",
    "wrapper": "http://localhost:8080/wrappers/1"
}

毕竟,当我调用端点http://localhost:8080/wrappers/1/items 时,正如预期的那样,我得到了这两个项目的列表,但问题是,我似乎在这个端点上没有排序功能。我似乎能够在http://localhost:8080/items 端点中进行排序,但是在关联获取时,似乎没有排序功能。这是故意缺少排序,还是我缺少一些配置?


附:例如,当我创建自定义搜索方法时;

@RepositoryRestResource
public interface ItemRepository extends JpaRepository<Item, String> {
    List<Item> findByWrapper_Id(@Param("id") String id, Sort sort);
}

然后我可以使用http://localhost:8080/items/search/findByWrapper_Id端点排序,但是太丑了imo,考虑到已经有一个自动生成的端点。

【问题讨论】:

    标签: sorting spring-data spring-data-jpa spring-data-rest


    【解决方案1】:

    Spring Data Rest 不支持对关联进行排序。

    根据 Spring Data Rest 团队的说法,您似乎已经找到了执行所需操作的最佳方法 - 创建查询以获取所需数据。这确实支持分页和排序。

    不支持的原因与查询获取主要资源的时间(在建立关联端点之前)以及关联端点直接使用加载的实体关联的事实有关为了支持排序,无论如何都需要进行新的查询。

    更详细的信息可以在这里找到:

    https://jira.spring.io/browse/DATAREST-725?focusedCommentId=122244&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-122244

    干杯!

    【讨论】:

      猜你喜欢
      • 2018-10-08
      • 2020-08-08
      • 2016-07-11
      • 2015-04-26
      • 2019-07-23
      • 2017-07-27
      • 1970-01-01
      • 2014-06-21
      • 2014-04-23
      相关资源
      最近更新 更多