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

t98cgbkg  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(160)

我了解到,当我想分页“@Embedded class's properties”时,我必须写下如下代码

@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是否执行string check?如果是,我在哪里可以看到该代码?
我很抱歉我的英语不好

xtupzzrd

xtupzzrd1#

当您使用@Embedded annotation时,Spring利用反射来识别注解字段的类型。在给定的场景中,DepEntity类包含ExpEntity的嵌入式示例。如果在查询中使用exp.totalExp,Spring会意识到totalExp属于ExpEntity类,因为它的@Embeddable annotation。
使用这些数据,Spring生成一个SQL查询,该查询分别为ExpEntity和totalExp字段合并适当的表和列名。

相关问题