我了解到,当我想分页“@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?如果是,我在哪里可以看到该代码?
我很抱歉我的英语不好
1条答案
按热度按时间xtupzzrd1#
当您使用@Embedded annotation时,Spring利用反射来识别注解字段的类型。在给定的场景中,DepEntity类包含ExpEntity的嵌入式示例。如果在查询中使用exp.totalExp,Spring会意识到totalExp属于ExpEntity类,因为它的@Embeddable annotation。
使用这些数据,Spring生成一个SQL查询,该查询分别为ExpEntity和totalExp字段合并适当的表和列名。