JPA的Sort如何找到@Embedded属性?

问题描述 投票:0回答:1

我了解到,当我想要分页“@Embedded 类的属性”时,我必须写下如下代码

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

@Embeddable
public class ExpEntity {
    @Column(name = "exp_total")
    private BigDecimal totalExp;
}
Sort sort = Sort.by("exp.totalExp").descending();
PageRequest pageRequest = PageRequest.of(0, 10, sort);
Page<DepEntity> depEntities  = depEntityRepository.findAll(pageRequest);

就像

Sort.by("exp.totalExp").descending()
一样,当我想分页“totalExp”属性时,我必须将其用作“exp.totalExp”。

我的问题是,spring如何知道totalExp在ExpEntity中? spring 是否进行字符串检查?如果是这样,我在哪里可以看到该代码?

我很抱歉我的英语不好

spring-boot sorting jpa pagination
1个回答
0
投票

当您使用@Embedded注解时,Spring利用反射来识别注解字段的类型。在给定的场景中,DepEntity 类包含 ExpEntity 的嵌入实例。如果在查询中使用 exp.totalExp,Spring 会因其 @Embeddable 注解而知道 TotalExp 属于 ExpEntity 类。

使用此数据,Spring 生成一个 SQL 查询,其中分别包含 ExpEntity 和totalExp 字段的适当表名和列名。

© www.soinside.com 2019 - 2024. All rights reserved.