如何在自定义对象类中设置@ServerTimestamp注释 - Firestore

时间:2017-10-11 13:58:28

标签: java android google-cloud-firestore

我在Firestore数据库中有一个TimeStamp字段,格式为: Quarta-feira,11 de Outubro de2017à10:24:54 GMT-03:00

定义为: map.put(“timestamp”,FieldValue.serverTimestamp());

根据Firestore说明,您需要直接向模型类添加注释。

我的班级中有TimeStamp字段。我尝试使用TimeStamp但它不起作用

解决此问题的最佳方法是什么?

代码类型号:

public class Servicos {

        private String nome_produto;
        private String duracao;
        private String valor;
        private String valor_old;
        private String categoria;
        private String categoria_nome;
        private String sub_categoria;
        private String sub_categoria_nome;
        private String descricao;
        private String duracao_milis;
        private String timestamp;

        public Servicos() {
        }

        public Servicos(String nome_produto, String duracao, String valor, String valor_old,
                        String categoria, String categoria_nome, String sub_categoria, String sub_categoria_nome,
                        String descricao, String duracao_milis, String timestamp){

            this.nome_produto = nome_produto;
            this.duracao = duracao;
            this.valor = valor;
            this.valor_old = valor_old;
            this.categoria = categoria;
            this.categoria_nome = categoria_nome;
            this.duracao_milis = duracao_milis;
            this.sub_categoria = sub_categoria;
            this.sub_categoria_nome = sub_categoria_nome;
            this.descricao = descricao;
            this.timestamp = timestamp;

        }

        public String getNome_produto() {
            return nome_produto;
        }

        public void setNome_produto(String nome_produto) {
            this.nome_produto = nome_produto;
        }

        public String getDuracao() {
            return duracao;
        }

        public void setDuracao(String duracao) {
            this.duracao = duracao;
        }

        public String getValor() {
            return valor;
        }

        public void setValor(String valor) {
            this.valor = valor;
        }

        public String getValor_old() {
            return valor_old;
        }

        public void setValor_old(String valor_old) {
            this.valor_old = valor_old;
        }

        public String getCategoria() {
            return categoria;
        }

        public void setCategoria(String categoria) {
            this.categoria = categoria;
        }

        public String getCategoria_nome() {
            return categoria_nome;
        }

        public void setCategoria_nome(String categoria_nome) {
            this.categoria_nome = categoria_nome;
        }

        public String getSub_categoria() {
            return sub_categoria;
        }

        public void setSub_categoria(String sub_categoria) {
            this.sub_categoria = sub_categoria;
        }

        public String getSub_categoria_nome() {
            return sub_categoria_nome;
        }

        public void setSub_categoria_nome(String sub_categoria_nome) {
            this.sub_categoria_nome = sub_categoria_nome;
        }

        public String getDescricao() {
            return descricao;
        }

        public void setDescricao(String descricao) {
            this.descricao = descricao;
        }

        public String getDuracao_milis() {
            return duracao_milis;
        }

        public void setDuracao_milis(String duracao_milis) {
            this.duracao_milis = duracao_milis;
        }

        public String getTimestamp() {
            return timestamp;
        }

        public void setTimestamp(String timestamp) {
            this.timestamp = timestamp;
        }
    }

Ref Firestore文档:Link Firestore

// If you're using custom Java objects in Android, add an @ServerTimestamp
// annotation to a Date field for your custom object classes. This indicates
// that the Date field should be treated as a server timestamp by the object mapper.

DocumentReference docRef = db.collection("objects").document("some-id");

// Update the timestamp field with the value from the server
Map<String,Object> updates = new HashMap<>();
updates.put("timestamp", FieldValue.serverTimestamp());

docRef.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() {
    // ...
    // ...

2 个答案:

答案 0 :(得分:5)

以下是如何将ServerTimestamp与自定义Java类一起使用的示例:

public class Rating {

    private String userId;
    private @ServerTimestamp Date timestamp;

    public Rating() {}

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public Date getTimestamp() {
        return timestamp;
    }

     public void setTimestamp(Date timestamp) {
        this.timestamp = timestamp;
    }
}

答案 1 :(得分:0)

试试这个:

public class Klass {
    private Date timestamp;

    public Klass() {}

    @ServerTimestamp
    public Date getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(Date timestamp) {
        this.timestamp = timestamp;
    }
}