Firestore - 准确放置@Exclude注释的位置?

时间:2018-04-16 20:17:14

标签: java android firebase google-cloud-firestore

我很担心将@Exclude注释放在我不希望在Cloud Firestore数据库中使用的字段的位置。

仅将它放在getter方法上是否足够?它还有什么作用将它添加到setter方法或变量声明?

在我的示例中,我不想存储文档ID,因为这将是多余的:

public void loadNotes(View v) {
    notebookRef.get()
            .addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    String data = "";

                    for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
                        Note note = documentSnapshot.toObject(Note.class);
                        note.setDocumentId(documentSnapshot.getId());
                        String title = note.getTitle();
                        String description = note.getDescription();

                        data += "\nTitle: " + title + "Description: " + description;
                    }

                    textViewData.setText(data);
                }
            });
}

模特课:

public class Note {
private String documentId;
private String title;
private String description;

public Note() {
    //public no arg constructor necessary
}

public Note(String title, String description) {
    this.title = title;
    this.description = description;
}

@Exclude
public String getDocumentId() {
    return documentId;
}

public void setDocumentId(String documentId) {
    this.documentId = documentId;
}

public String getTitle() {
    return title;
}

public String getDescription() {
    return description;
}

}

1 个答案:

答案 0 :(得分:10)

由于您对private类中的字段使用Note修饰符,要从Cloud Firestore数据库中排除属性,您应将@Exclude注释放在相应的getter之前。

@Exclude
public String getDocumentId() {return documentId;}
  

仅将它放在getter方法上是否足够?

是的,这就足够了。如果您对字段使用了public修饰符,要忽略属性,您应该在属性之前放置@Exclude注释:

@Exclude 
public String documentId;
  

将它添加到setter方法或变量声明有什么影响?

没效果。