Проверка уникальных значений в realm Android

#java #android #arrays #realm

#java #Android #массивы #realm

Вопрос:

У меня есть модель Pedido, в которой есть RealmList Itens, а у Itens есть produt_id, чтобы добавить Itens в Pedidos, я использую следующий метод, но таким образом я могу добавить тот же элемент в Pedidos, я не могу найти способ проверить, существует ли этот элемент уже.

Класс Pedido:

 public class Pedidos extends RealmObject implements Serializable {

    @SerializedName("id")
    String id;

    @SerializedName("produtos")
    RealmList<Itens> itens;



    public Pedidos() {
    }


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }


    public RealmList<Itens> getItens() {
        return itens;
    }

    public void setItens(RealmList<Itens> itens) {
        this.itens = itens;
    }


}
  

Класс Itens:

 public class Itens extends RealmObject implements Serializable {

    String id_local;
    String id_pedido_local;
    @SerializedName("id")
    String id;
    @SerializedName("pedido_id")
    String id_pedido;
    @SerializedName("produto_id")
    String produto_id;
    @SerializedName("operacao_id")
    String operacao_id;
    @SerializedName("quantidade_pedida")
    String quantidade;
    @SerializedName("valor_unitario")
    String valor_unitario;
    @SerializedName("cfop")
    String cfop;
    @SerializedName("valor_total")
    String valor_total;
    @SerializedName("valor_tributo_st")
    String valor_tributo_st;
    @SerializedName("valor_tributo_icms_exibir")
    String valor_tributo_icms_exibir;
    @SerializedName("valor_tributo_cofins_exibir")
    String valor_tributo_cofins_exibir;
    @SerializedName("ncm")
    String ncm;
    Float valorTotal;

    public Itens() {
    }


    public String getId_pedido_local() {
        return id_pedido_local;
    }

    public void setId_pedido_local(String id_pedido_local) {
        this.id_pedido_local = id_pedido_local;
    }

    public String getId_local() {
        return id_local;
    }

    public void setId_local(String id_local) {
        this.id_local = id_local;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getId_pedido() {
        return id_pedido;
    }

    public void setId_pedido(String id_pedido) {
        this.id_pedido = id_pedido;
    }

    public String getProduto_id() {
        return produto_id;
    }

    public void setProduto_id(String produto_id) {
        this.produto_id = produto_id;
    }

    public String getOperacao_id() {
        return operacao_id;
    }

    public void setOperacao_id(String operacao_id) {
        this.operacao_id = operacao_id;
    }

    public String getQuantidade() {
        return quantidade;
    }

    public void setQuantidade(String quantidade) {
        this.quantidade = quantidade;
    }

    public String getValor_unitario() {
        return valor_unitario;
    }

    public void setValor_unitario(String valor_unitario) {
        this.valor_unitario = valor_unitario;
    }

    public String getCfop() {
        return cfop;
    }

    public void setCfop(String cfop) {
        this.cfop = cfop;
    }

    public String getValor_total() {
        return valor_total;
    }

    public void setValor_total(String valor_total) {
        this.valor_total = valor_total;
    }

    public String getValor_tributo_st() {
        return valor_tributo_st;
    }

    public void setValor_tributo_st(String valor_tributo_st) {
        this.valor_tributo_st = valor_tributo_st;
    }

    public String getValor_tributo_icms_exibir() {
        return valor_tributo_icms_exibir;
    }

    public void setValor_tributo_icms_exibir(String valor_tributo_icms_exibir) {
        this.valor_tributo_icms_exibir = valor_tributo_icms_exibir;
    }

    public String getValor_tributo_cofins_exibir() {
        return valor_tributo_cofins_exibir;
    }

    public void setValor_tributo_cofins_exibir(String valor_tributo_cofins_exibir) {
        this.valor_tributo_cofins_exibir = valor_tributo_cofins_exibir;
    }

    public Float getValorTotal() {
        return valorTotal;
    }

    public void setValorTotal(Float valorTotal) {
        this.valorTotal = valorTotal;
    }

    public String getNcm() {
        return ncm;
    }

    public void setNcm(String ncm) {
        this.ncm = ncm;
    }
}
  

Метод:

   public void updatePedidoItem(String id, String empresa_id, RealmList<Produtos> produtos) {

        realm.beginTransaction();

        Pedidos pedido = realm.where(Pedidos.class).equalTo("id_pedido_local", id).equalTo("empresa_id", empresa_id).findFirst();

        for (int j = 0; j < produtos.size(); j  ) {

            Itens mItens = realm.createObject(Itens.class);
            mItens.setId_local(UUID.randomUUID().toString());
            mItens.setId_pedido_local(id);
            mItens.setProduto_id(produtos.get(j).getProduto_id());
            mItens.setQuantidade(produtos.get(j).getQuantidade());
            mItens.setValor_unitario(produtos.get(j).getValor());
            mItens.setOperacao_id(produtos.get(j).getOperacao_id());

            if (pedido.getItens().size() == 0) {
                pedido.getItens().add(mItens);
            } else {

                for (int i = 0; i < pedido.getItens().size(); i  ) {

                    if (!pedido.getItens().contains(mItens)) {

                        pedido.getItens().add(mItens);
                    }
                }
            }

        }
        realm.commitTransaction();

    }
  

Комментарии:

1. @PrimaryKey

Ответ №1:

Отметьте свой идентификатор в качестве первичного ключа в realm

 @SerializedName("id")
@PrimaryKey
String id;