Spring Data中PersistentEntity迭代PersistentProperty的顺序规则是什么?
PersistentProperty 遍历顺序说明
- 默认情况下,遍历
PersistentProperty的顺序与实体类中属性定义的顺序一致,但要满足两个前提:- 实体类编译时保留了参数/字段名(Java 8及以上需配合
-parameters编译参数,Spring Data会通过字节码分析获取原生定义顺序) - 没有自定义
PersistentPropertyComparator来修改排序逻辑
- 实体类编译时保留了参数/字段名(Java 8及以上需配合
- 遍历顺序绝非随机,Spring Data内部通过
PersistentEntity的属性集合维护固定顺序,原生逻辑严格遵循类中字段或Getter方法的定义顺序 - 如果使用了
@JsonPropertyOrder这类排序注解,或者自定义了Spring Data的属性排序策略,遍历顺序会被对应的规则覆盖
补充:若实体类是动态生成的,或用到了字节码增强工具,顺序可能受工具实现影响,但常规业务实体无需考虑这种特殊情况。
内容的提问来源于stack exchange,提问作者akshay
相关产品推荐
相关产品推荐

