[RESOLVIDO]Update com hibernate

5 respostas
M

Galera…Sou novo com o hibernate. Poderiam me dar uma ajuda?
Estou fazendo um sistema de urna eletrônica para a escola.
Consegui utilizar o hibernate para inserir dados no banco e retornar consultas.
Porém, não estou conseguindo pegar um determinado registro do banco e fazer um “update” nele.

Tentei desta forma:

List<Candidato> candidato = Banco.consulta(Banco.gerenciador(), "select c from Candidato c");
        int x = candidato.get(0).getContVotos();
        candidato.get(0).setContVotos(x++);

        EntityManagerFactory emt = Persistence.createEntityManagerFactory("projurna");
        EntityManager em = emt.createEntityManager();
        em.getTransaction().begin();
        em.persist(candidato.get(0));
        em.getTransaction().commit();
        em.close();
        emt.close();

Porém, ele identifica que o candidato.get(0) é um novo objeto, e não uma atualização do mesmo registro.

Alguem sabe me explicar qual a maneira correta de fazer esse update?

Seguem as classes.

5 Respostas

M

Consegui resolver.

Bastou utilizar em.merge(candidato.get(0));

Obrigado. :slight_smile:

G

marcoacsilva:
Consegui resolver.

Bastou utilizar em.merge(candidato.get(0));

Obrigado. :)

É somente para testes isso certo amigo?

Pois se for para pegar um registro especifico, utilize NamedQuery que dai nao busca todos os registros.

Abraços

M

Gleidson Henrique:
marcoacsilva:
Consegui resolver.

Bastou utilizar em.merge(candidato.get(0));

Obrigado. :)

É somente para testes isso certo amigo?

Pois se for para pegar um registro especifico, utilize NamedQuery que dai nao busca todos os registros.

Abraços

Como funciona? É errado utilizar o merge?

G

Não não amigo, digo referente a você buscar todas as informações no db…

Isso ai esta buscando todos os registros, correto? Dai você utilizou o get(0) para buscar o primeiro registro da lista…

Disse que se for pra testar se está funcionando é de boa ne, mas que na hora de implementar pra valer, para voce utiliza NamedQuery e busca de acordo com os parametros desejados. Dessa maneira, você buscará apenas o registro que quiser, e não todos os registros da tabela…

Abraços

M

Gleidson Henrique:
Não não amigo, digo referente a você buscar todas as informações no db…

Isso ai esta buscando todos os registros, correto? Dai você utilizou o get(0) para buscar o primeiro registro da lista…

Disse que se for pra testar se está funcionando é de boa ne, mas que na hora de implementar pra valer, para voce utiliza NamedQuery e busca de acordo com os parametros desejados. Dessa maneira, você buscará apenas o registro que quiser, e não todos os registros da tabela…

Abraços

Ah…agora entendi. Sim sim, eh apenas pra teste.
Valeu pela ajuda, cara. :slight_smile:

Criado 6 de outubro de 2012
Ultima resposta 8 de out. de 2012
Respostas 5
Participantes 2