TransWikia.com

Objeto não é atualizado

Stack Overflow em Português Asked on December 11, 2021

No meu fluxo é assim:

  • Já possuo um objeto armazenado no banco de dados.
  • Ao carregar minha página, estes objetos são buscados no banco, tratados para serem exibidos.
  • Os objetos chegam em uma Lista (List), dessa é iterada por um for para receber os devidos tratamentos.
  • Enquanto um objeto é tratado, eu faço uma consulta de webservice recebendo um outro objeto. Faço uma comparação entre os objetos e caso haja diferença, o objeto que veio do banco precisa ser atualizado.

Basicamente é isso, o problema ocorre é que eu atualizo meu objeto e mando atualizar no banco mas não atualiza. Alguém pode me dar um help ?

O método que busca no banco:

public void pesquisar() {
        List<Objeto> objetos = new ArrayList<>();
        objetos = service.findAll();
        this.encomendas = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(objetos)) {
            try {
                for (Objeto objeto : objetos) {
                    houveAlteracao(objeto);
                    ajustarInformacoes(objeto);
                }
                ordenarLista();
                horaAtualizacao = new Date();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

Agora o método houveAlteracao() :

private void houveAlteracao(Objeto objeto) {
        try {
            final Objeto obj = popularObjeto(objeto.getCodigo());
            if (obj.getEventos().size() > objeto.getEventos().size()) {
                objeto.setEventos(obj.getEventos());
                service.update(objeto);
            } else {
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

Neste método se getEventos.size() que pertence ao objeto pesquisado na webservice for maior, o objeto do banco deve receber estes valores e depois atualizado, o problema é que o comando é aplicado mas não atualiza. E por último o comando de atualizar:

public void update(Objeto objeto) {
        this.em.merge(objeto);
    }

Alguém ajuda por favor ?

One Answer

Obrigado a todos que tentaram ajudar, mas lendo este Artigo claro pra mim, então assim funcionou:

private void houveAlteracao(Long id) {
        try {
            Objeto objeto = service.find(id);
            final Objeto obj = popularObjeto(objeto.getCodigo());
            if (obj.getEventos().size() > objeto.getEventos().size()) {
                Evento evento = obj.getEventos().get(0);
                objeto.getEventos().add(evento);
                evento.setHorario(JsfUtils.stringParaTimestamp(evento.getDataOcorrencia().concat(" ").concat(evento.getHoraOcorrencia())));
                evento.setObjeto(objeto);
                service.update(objeto);
                pesquisar();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

Answered by Roknauta on December 11, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP