我了解到,当我想要分页“@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 是否进行字符串检查?如果是这样,我在哪里可以看到该代码?
我很抱歉我的英语不好
当您使用@Embedded注解时,Spring利用反射来识别注解字段的类型。在给定的场景中,DepEntity 类包含 ExpEntity 的嵌入实例。如果在查询中使用 exp.totalExp,Spring 会因其 @Embeddable 注解而知道 TotalExp 属于 ExpEntity 类。
使用此数据,Spring 生成一个 SQL 查询,其中分别包含 ExpEntity 和totalExp 字段的适当表名和列名。