java - 如何使用 Pageable 对嵌入实体的属性进行排序?

标签 java spring spring-data-jpa

我将一个实体嵌入到另一个实体中,如下所示。 该存储库是在 DepEntity 上创建的。 我正在尝试检索在 totalExp 列上排序的 DepEntity 对象 在ExpEntity中。 我正在使用 Pageable 进行 GET 调用并收到错误:

2018-12-18 05:17:58.172 WARN 7 --- [http-nio-8000-exec-3] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.data.mapping.PropertyReferenceException: No property totalExp found for type DepEntity!]

我尝试使用 totalExpexp.totalExpexp_totalExp 但它们都不起作用。 spring data jpa版本为2.1.1

@Entity
public class DepEntity {
    @Embedded
    private ExpEntity exp;
}

@Embeddable
public class ExpEntity {
    @Column(name = "exp_total")
    private BigDecimal totalExp;
}

我希望结果按嵌套属性totalExp 的排序顺序排列。 有没有办法实现这个目标?

最佳答案

下面应该有效:

Sort sort = Sort.by("exp.totalExp").descending();
PageRequest pageRequest = PageRequest.of(0, 10, sort);
Page<DepEntity> depEntities  = depEntityRepository.findAll(pageRequest);

关于java - 如何使用 Pageable 对嵌入实体的属性进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53856884/

相关文章:

java - 为什么 read 和 write 是 InputStream 和 OutputStream 中仅有的抽象方法

java - 我可以将 code_swarm 配置为只创建 png 文件而不显示吗?

java - Spring @Transactional 隔离传播

java - 两个模块和一项服务。如何处理?

java - 配置 libmediainfo 以使用 Java 项目而无需在所有平台 (OS) 上安装

java - DAO 类具有相同的 @Qualifier

java - 升级到 5.1.39 之后找不到 mysql-connector-java 驱动程序

javascript - 图像未插入到 Spring Boot 中

java - @UpdateTimestamp 不会更新第二次保存时的值

java - JPA - 映射具有相同实体的列