java - Spring Data Rest 投影排序

标签 java spring spring-data-rest projection

我有一个实体投影,我需要按内部类字段对其进行排序。这是我实体的一部分:

class Person {
    UUID guid;
    Set<DisabilityHistory> disabilityHistory;
}
class DisabilityHistory {
    Date createdDate;
}

我知道 sort 参数,但像 api/person/search?projection=myProjection&sort=disabilityHistory.createdDate,asc 这样的请求不起作用。我找到的唯一解决方案是在我的实体中使用 @OrderBy 注释,但在这种情况下,它将始终排序,我担心性能。

最佳答案

这将不起作用,因为您正在尝试对实体中的内部字段进行排序,因此您不能在数据库级别执行此操作。我使用它的方式是在 Projection 中对其进行排序。类使用SpEL .这是您如何做到这一点的示例:

@Projection(
        name = "sorted",
        types = Person.class
)
public interface PersonProjection {

    @Value("#{@personProjectionHelper.sortedByDisabilityHistory(target.disabilityHistory)}")
    List<DisabilityHistory> getDisabilityHistory();
}

并用 Java 实现排序:

@Component
public class PersonProjectionHelper {

    public List<DisabilityHistory> sortByDisabilityHistory(final List<DisabilityHistory> list) {
        // do the sorting on Java level
    }
}

关于java - Spring Data Rest 投影排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42652129/

相关文章:

java - 无法从 Assets 文件夹中读取图像文件并在 Android 中使用 Intent 共享它?

java - 具有多个 Action 的形式?

spring-boot - 部署到独立 Tomcat 时 Spring Boot 应用程序无法正常工作

java - 调用抛出 IllegalArgumentException : wrong number of arguments

Java - 在 JTextArea 中查找某个字符串

java - Java中替换对象List中的字符串内容

java - 如何根据输入创建不同的 spring beans

java - 没有这样的 bean 定义并且不可能创建 bean

java - 在 Spring Data Rest 中处理自定义 POST PUT 和 PATCH 请求中的关联条目

Spring Data Rest PUT 与 PATCH LinkableResources