2
respostas

Como usar o merge do Entity Manager para atualizar um valor no banco de dados?

eu estou usando da seguinte forma o metodo:

    @Put
    public void altera(@Valid Aluno aluno) {
        validator.onErrorForwardTo(ErroController.class).erro();

        em.getTransaction().begin();
        em.merge(aluno);
        em.getTransaction().commit();

        result.include("message", "ALUNO ALTERADO");
        result.redirectTo(this).lista();
     }

esse metodo serve para receber um aluno que agora nao vem ao caso, mas usando de exemplo que tenha somente um nome pra esse aluno, aí eu carrego ele numa form para editar, faço a alteração que eu quiser, e clico em salvar para atualizar esse nome, aí a form chama esse metodo "altera", só que retorna erro 405, metodo nao permitido,

2 respostas

O merge sempre vai "mergear" a entidade inteira, essa é a ideia. A jpa não possui o conceito de atualização parcial. O que você precisa fazer é carregar a entidade que já existe e alterar apenas a informaçao necessária.

Humm, eu carrego do banco todos os dados do aluno, e altero os que eu preciso e clico em salvar. No curso da alura ele usa esse merge para fazer isso, não entendo muito para fazer isso que citou, se pudesse me explicar com algum exemplo seria mais produtivo, obrigado