Kad*_*rat 2 java spring projection spring-data-rest
我对我的实体有一个投影,我需要按内部类的字段对它进行排序.这是我的实体的一部分:
class Person {
UUID guid;
Set<DisabilityHistory> disabilityHistory;
}
class DisabilityHistory {
Date createdDate;
}
Run Code Online (Sandbox Code Playgroud)
我知道sortparam但是请求就像api/person/search?projection=myProjection&sort=disabilityHistory.createdDate,asc不起作用.我发现的唯一解决方案是@OrderBy在我的实体中使用注释,但在这种情况下,它将始终排序,我担心性能.
当您尝试对实体中的内部字段进行排序时,这将无法工作,因此您无法在数据库级别上执行此操作.我使用它的方法是使用SpEL在Projection类中对其进行排序.这是一个如何做到这一点的例子:
@Projection(
name = "sorted",
types = Person.class
)
public interface PersonProjection {
@Value("#{@personProjectionHelper.sortedByDisabilityHistory(target.disabilityHistory)}")
List<DisabilityHistory> getDisabilityHistory();
}
Run Code Online (Sandbox Code Playgroud)
并在Java中实现排序:
@Component
public class PersonProjectionHelper {
public List<DisabilityHistory> sortByDisabilityHistory(final List<DisabilityHistory> list) {
// do the sorting on Java level
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |