You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase获取数据时Candidat类offres属性的类型定义问题

Firebase中Candidat类offres属性的类型设置方案

数据库示例

你当前已经能通过 Candidat candidat = snapshot.child(mail).getValue(Candidat.class); 正常获取Candidat类的其他属性:

private String password;
private String nom;
private String prenom;
private String dateNaissance;
private String sexe;
private String nationalite;
private boolean affichageInfo;

针对offres属性,按照数据库结构来设置类型即可:

  1. 定义Offre实体类
    对应数据库中offres子节点的字段,创建Offre类(必须包含无参构造函数,Firebase序列化要求):

    public class Offre {
        private String titre;
        private String description;
        // 按需添加数据库中offres的其他属性,比如date、entreprise等
        
        public Offre() {}
        
        // 所有属性的Getter和Setter方法
        public String getTitre() { return titre; }
        public void setTitre(String titre) { this.titre = titre; }
        public String getDescription() { return description; }
        public void setDescription(String description) { this.description = description; }
    }
    
  2. 在Candidat类中添加offres属性
    数据库里offres是“唯一ID-职位对象”的键值对结构,所以属性类型设为Map<String, Offre>:

    // 保留原有属性
    private String password;
    private String nom;
    private String prenom;
    private String dateNaissance;
    private String sexe;
    private String nationalite;
    private boolean affichageInfo;
    // 新增offres属性
    private Map<String, Offre> offres;
    
    // Candidat类必须有无参构造函数
    public Candidat() {}
    
    // offres的Getter和Setter方法
    public Map<String, Offre> getOffres() { return offres; }
    public void setOffres(Map<String, Offre> offres) { this.offres = offres; }
    

修改完成后,原有的对象构建代码就能正常获取offres数据,遍历Map即可访问每个职位信息。如果offres是纯数组结构,也可以用List<Offre>类型,但Firebase Realtime Database更推荐用Map存储带唯一标识的集合,避免数组索引混乱问题。

内容的提问来源于stack exchange,提问作者Samuel Carva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:10:25