【发布时间】:2020-07-22 02:17:30
【问题描述】:
我想根据查询参数 sort 对嵌套集合属性进行动态排序。
假设我有一个实体 A
class A{
@OneToMany(mappedBy="a")
private Set<B> bset;
}
class B{
private LocalDate datefield;
@ManyToOne
private C c;
}
class C
{
private Double quantity;
}
我用 findAll(Specification specification,Pageable page) 调用 A 的存储库
在 UI 中,rest 控制器使用如下模式调用排序参数
url?page=0&size=10&sort=bset_datefield
因为它是一个嵌套集合,所以上面的排序不起作用。 可排序的字段是日期字段、数量。
我知道 @OrderBy("bset.datefield") 会起作用,但参数应该是动态的。
调用 find All on A repository 时如何实现这一点?
【问题讨论】:
-
Set 的元素没有顺序。您将需要改用 SortedSet。要根据需要进行动态排序,我认为您需要创建自定义 SQL 查询或在从数据库加载元素后对其进行排序。
标签: java spring-data-jpa pageable