Problemas com merge do JPA

5 respostas
jemoliveira

bom galera minha duvida é o seguinte

public void atualizar(Object obj) throws ModeloException{
        try{
            validar(obj);
            getEm().merge(obj);
            getEm().flush();
        }catch(Exception e){
            throw new ModeloException("Ocorreu um erro ao atualizar o objeto." +
                    e.getMessage());
        }
    }

na pagina apago o item que tudo certo e meu obj vem carregado com a alteração certinha, bom no momento que vou atualizar os dados ele não atualiza as informação no banco

na pagina ele apaga pois esta na memoria, mais no banco essa joça não vai

alguem sabe o pq disso?

mais essas informações para um melhor entendimento, essas informações que não estão persistindo
@OneToMany(cascade = CascadeType.ALL, mappedBy = "usuario")
    private Collection<EmpresaAutorizada> empresasAutorizadas;[code]

5 Respostas

J

tenta getEm().saveOrUpdate(obj); no lugar do merge

L
getEm().merge(obj);

eu uso assim para atualizar pois o merge retorna um obj

obj=  getEm().merge(obj);

mas vc pode usar o persist() caso ele ainda nao exista.

jemoliveira

mais esse metodo não existe

L

qual metodo amigo?? se for o saveOrUpdate ele so tem no hibernate core no caso vc tah usando jpa nao vai ter mesmo.

jemoliveira

bom galera fiz de um outro jeito, apartir do momento que ele encontra o objeto selecionado ele ja apaga da base

segue o codigo

public void removerEmpresasAutorizadas() {
        try {
            
            int index = 0;            
            int indexCB = 0;

            while (index < usuario.getEmpresasAutorizadas().size()) {
                tableAut.setRowIndex(indexCB);
                if (!selectedEmpresaAutorizada.isSelected()) {
                    index++;
                } else {
                    tableAut.setRowIndex(index);
                    EmpresaAutorizada obj = (EmpresaAutorizada) tableAut.getRowData();                    
                    gerenciarUsuario.apagarEmpresaAutorizada(obj);
                    usuario.removerEmpresaAutorizada(obj);
                }
                indexCB++;
            }
            tableAut.setRowIndex(-1);
        } catch(Exception e) {
            e.printStackTrace();
            JSFHelper.addGlobalMessage(e.getMessage());
        }
    }
Criado 10 de novembro de 2009
Ultima resposta 11 de nov. de 2009
Respostas 5
Participantes 3