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

How set @ServerTimestamp annotation in custom object classes - Firestore

我在 Firestore 数据库中有一个时间戳字段,格式如下:Quarta-feira, 11 de Outubro de 2017 às 10:24:54 GMT-03:00

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

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

我的 class 字符串中有时间戳字段。我尝试使用 TimeStamp 但它不起作用

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

代码Class型号:

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;
        }
    }

参考 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>() {
    // ...
    // ...

下面是一个如何将 ServerTimestamp 与自定义 Java class 结合使用的示例:

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;
    }
}

试试这个:

public class Klass {
    private Date timestamp;

    public Klass() {}

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

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