Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como fazer um UPDATE de uma entidade :)

Opa, na aula 2 do curso, se por exemplo eu errar o campo titulo do produto e quiser corrigir usando um UPDATE, como ficaria?

Eu estou tentando criar o metodo mas sem sucesso, segue o metodo baseado no curso. No exemplo eu quero atualizar o nome da classe Cartorio:

codigo da classe:

@Entity
public class Cartorio {

    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    private String nome;
}

o controller:

@RequestMapping("/editar/{id}")
    public ModelAndView editar(@PathVariable("id") Integer id) {
        Cartorio cartorio = cartorioDao.find(id);
        cartorioDao.gravar(cartorio);
        return new ModelAndView("/cartorios/editar");
    }

O form .JSP:

<form:form action="${s:mvcUrl('CC#editar').build()}" method="POST" commandName="cartorio">

    <div>
            <label>Nome do Cartório</label>
            <input type="text" name="nome"/>
            <form:errors path="nome"/>
        </div>

        <button type="submit">Atualizar</button>
    </form:form>

e o DAO de cartorio:

public void atualiza(Cartorio cartorio) {
        manager.createQuery("UPDATE from Cartorio WHERE nome= :nome")
            .setParameter("nome", cartorio.getNome())
            .executeUpdate();
    }

Se alguém conseguir me ajudar, ficarei muito grato :)

1 resposta
solução!

Oi Bruno,

No seu formulário jsp você precisa adicionar também um campo escondido com o id do registro, para que a JPA saiba qual registro deve atualizar no banco de dados.

E no dao basta chamar o método merge do entitymanager para fazer a atualização no banco de dados.