Firestore为何无法映射private类型字段?
Firestore私有字段映射失败的原因与解决办法
Firestore的Java/Kotlin客户端对象映射逻辑有明确规则,你遇到的私有字段无法映射问题,主要和两点有关:
- 反射访问权限与优先级:Firestore映射器优先尝试直接通过反射访问字段,私有字段默认不允许反射读写,没有额外配置的话这一步会失败。
- Setter方法的匹配规则:即便你定义了setter,也必须严格遵循JavaBean规范才能被映射器识别——字段名
responsorio对应的setter必须是setResponsorio(LHResponsoryShort value)(首字母大写,前缀加set),命名不符合的话,映射器会找不到该方法,自然无法完成赋值。
解决办法
修正Setter命名
确保setter完全符合JavaBean规范,示例代码:public class BiblicalShort { private LHResponsoryShort responsorio; // 符合规范的setter public void setResponsorio(LHResponsoryShort responsorio) { this.responsorio = responsorio; } }用注解指定字段映射关系
若不想调整访问权限或setter命名,可以给私有字段和对应的setter加上@PropertyName注解,明确关联Firestore中的键名:import com.google.firebase.firestore.PropertyName; public class BiblicalShort { @PropertyName("responsorio") private LHResponsoryShort responsorio; @PropertyName("responsorio") public void setMyResponsorio(LHResponsoryShort responsorio) { this.responsorio = responsorio; } }使用Lombok简化配置
用Lombok的@Setter注解自动生成符合规范的setter,避免手动命名出错:import lombok.Setter; public class BiblicalShort { @Setter private LHResponsoryShort responsorio; }
内容的提问来源于stack exchange,提问作者A. Cedano
相关产品推荐
相关产品推荐

