How to update object using entity manager?

0

To create I used:

public void adiciona(Produto produto) {
  em.getTransaction().begin();
  em.persist(produto);
  em.getTransaction().commit();
}

To remove I used:

public void remove(Produto produto) {
  em.getTransaction().begin();
  em.remove(produto);
  em.getTransaction().commit();
}

and to update I'm using the code below in the dao:

public void atualiza(Produto produto) {
  em.getTransaction().begin();
  em.merge(produto);
  em.getTransaction().commit();
}

and this method:

    @Post
    public void altera(@Valid Produto produto) {
       validator.onErrorForwardTo(this).inicio();
       dao.atualiza(produto);
       result.include("message", "PRODUTO ALTERADO");
       result.redirectTo(this).lista();
    }

and this jsp:

    <form action="<c:url value='/produto/altera'/>" method="POST">
        <input type="hidden" name="produto.id" value="${produto.id}"/>
        <div class="col s6">
            NOME: <input type="text" name="produto.nome" value="${produto.nome}"/>
        </div>
        <div class="col s6">
            DESCRIÇÃO: <input type="text" name="produto.descricao" value="${produto.descricao}"/>
        </div>
        <div class="col s4">
            QUANTIDADE: <input type="number" name="produto.quanitdade" value="${produto.quantidade}"/>
        </div>
        <div class="col s4">
            VALOR: <input type="number" name="produto.valor" value="${produto.valor}"/>
        </div>
        <div class="col s4">
            VALOR DO FRETE: <input type="number" name="produto.valorFrete" value="${produto.valorFrete}"/>
        </div>
        <div class="col s9"></div>
        <div class="col s3 right">
            <input type="submit" class="btn waves-effect waves-light btn-large right" value="SALVAR"></input>   
        </div>
    </form>

But it is entering the home page because of the validator, and if I remove it appears 500 error, that could not call the method changes.

    
asked by anonymous 21.06.2017 / 18:36

0 answers