Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

O curso em si, não ensina como fazer o update de um produto, eu tentei implementar e não obtive suceso. Veja!

FORMULARIO JA PREENCHIDO OS CAMPOS --> ok

<h3 class="page-header">Atualizar produto</h3>

<form action="papelaria/editar" method="POST">

<div class="form-group">
    <input type="text" class="form-control" name="id" value="${produto.id}" />
 </div>

    <div class="form-group">
        Nome: <input type="text" name="nome" value="${produto.nome}" class="form-control">
    </div>

    <div class="form-group">
        Descrição:
        <textarea rows="5" cols="5" class="form-control"  name="descricao">${produto.descricao}</textarea>
    </div>

    <div class="form-group">
        Quantidade: <input type="text" name="quantidade" value="${produto.quantidade}" class="form-control">
    </div>

    <div class="form-group">
        Categoria: <input type="text" name="categoria" value="${produto.categoria}" class="form-control">
    </div>

    <div class="form-group">
        Codigo de barras: <input type="text" name="codigo" value="${produto.codigo}" class="form-control">
    </div>

    <input type="submit" value="ATUALIZAR" class="btn btn-primary">

</form>

O Erro acontece após apertar ATUALIZAR.

CONTROLLER:

@Controller @RequestMapping("produtos") public class ProdutoController {

@Autowired
private ProdutoDao dao;

@RequestMapping(method = RequestMethod.POST, value = "/editar/{id}") public ModelAndView editar(@PathVariable Produto produto) { dao.atualizar(produto); ModelAndView andView = new ModelAndView("redirect:/produtos"); andView.addObject("produtos", produto); return andView; }

OLHA O DAO:

@Repository @Transactional public class ProdutoDao {

@PersistenceContext private EntityManager manager;

public void atualizar(Produto id) { Produto modificar = manager.find(Produto.class, id); if (modificar != null) { Produto modificado = manager.merge(modificar); }

}
3 respostas
solução!

Qual erro ocorre?

Obrigado, tinha conseguido. Usei o mesmo método gravar() para atualizar. Passei um if() com manager.merge() e consegui. ABS, Tinha me esquecido de marcar como solucionado. Mas fica aí a dica para futura dúvidas.

Perfeito amigo, bons estudos!