我有以下两个资源,和他们的联系;
@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端点中使用排序,但考虑到已经有一个自动生成的端点,海事组织太难看了。
发布于 2018-05-10 01:42:49
Spring数据Rest不支持对关联进行排序。
根据Spring团队的说法,您似乎已经找到了实现所需的最佳方法--创建一个获取所需数据的查询。这将确实支持分页和排序。
不支持它的原因与查询获取主资源的时间有关(在构建关联端点之前),以及关联端点直接使用加载的实体关联的事实,以及为了支持排序,无论如何都需要进行新的查询。
更详细的资料可在此查阅:
干杯!
https://stackoverflow.com/questions/44879248
复制相似问题