java - [CustomClassMapper] : No setter/field for . .. 在 Firebase Firestore 中的类中找到

标签 java android firebase google-cloud-firestore

我不知道为什么会收到此警告:

W/Firestore: (21.3.1) [CustomClassMapper]: No setter/field for lh. found on class com.example.model.Liturgia

获取数据代码:

    DocumentReference calRef = db.collection(CALENDAR_PATH).document(fechaYY).collection(fechaMM).document(fechaDD);
    calRef.addSnapshotListener((calSnapshot, e) -> {
        if ((calSnapshot != null) && calSnapshot.exists()) {
            mLiturgia = calSnapshot.toObject(Liturgia.class);
            DocumentReference dataRef = calSnapshot.getDocumentReference("lh.1");
            // ...

型号

public class Liturgia {
    private Breviario lh;
    //...

    public Liturgia() {
    }

    @Exclude
    public void getlh() {
    }

    @PropertyName("lh")
    public void setLh(Breviario lh) {
        this.lh = lh;
    }
}

文件

(A):calRef

正如你在代码中看到的,首先我阅读了这个文档:

enter image description here

(B):calSnapshot

然后,在第二个实例中,我读取了 (A)document 类型的一个字段中引用的另一个文档:

enter image description here

我将第二个文档映射到 Liturgia.class

如果我尝试将该方法命名为 set lh() 或尝试不使用 @PropertyName("lh"),则始终会显示警告。

代码按预期工作,但我不想看到此警告。

我看到这个答案:W/Firestore: [CustomClassMapper]: No setter/field for class Android但就我而言,属性的名称和方法的名称是相同的。

最佳答案

您收到以下警告:

W/Firestore: (21.3.1) [CustomClassMapper]: No setter/field for lh found on class com.example.model.Liturgia

因为 lh您的属性(property)Liturgia类的类型为 Breviario ,而数据库中是一个字符串数组。两者必须匹配。因此,如果您需要保留当前数据库数据,请将该属性更改为 List<String> 类型。 .

除此之外,使用:

@PropertyName("lh")

没有用,因为数据库中的属性已经被称为 lh 。所以没有必要这样做。

编辑:

以下是解决整个问题的步骤:

  1. 声明lh属性类型为 HashMap<String, Object>
  2. 删除@Ignore注释
  3. 更改 getter void 的返回类型以返回 HashMap<String, Object>
  4. 设置 HashMap<String, Object>进入 setter 。

所以,这里是 setter/getter :

public HashMap<String, Object> getLh() {
    return lh;
}

对于设置者:

public void setLh(HashMap<String, Object> lh) {
    this.lh = lh;
}

关于java - [CustomClassMapper] : No setter/field for . .. 在 Firebase Firestore 中的类中找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61015574/

相关文章:

android - 将 GridLayout 元素移动到新行以适应 Kivy 中较小的屏幕

android - 动态实现 EditText 字段时出现问题

java - React Native 问题 firebase 消息传递

android - 无法在 Genymotion 模拟器中获取 Firebase 通知

java - 无法实例化[org.springframework.data.domain.Pageable] : Specified class is an interface

java - 从内部类访问扩展类的方法

android - 如何将非基本数据传递给创建 Activity ?

javascript - 无法读取 firebase 函数中未定义错误的属性 https

java - Apache HTTP Server 的间歇性 SSL 握手错误

java - 如何在Windows中获取扩展的默认应用程序[Java]