RESOLVIDO !! - Hibernate cria novo dado ao atualizar  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
brunowc
Thread.start()
[Avatar]

Membro desde: 22/11/2008 16:33:24
Mensagens: 32
Offline

E ae pessoal, tudo certo, gostaria de saber se voces podem me ajudar,

Eu estou fazendo um projeto de controle de estoque, ´só que esta acontecendo o seguinte, existe o metodo armazenar, que serve pra atualizar os dados , só que quando eu armazeno, ele nao atualiza os dados, ele cria outro registro com os dados que eu alterei.
Pensei que fosse o GenerationType.SEQUENCE, mas comentei e mesmo assim continua do mesmo jeito .....


segue em exemplo abaixo

tenho a classe produto



O meu armazena da classe ProdutoLogic é esse



O meu dao é segue o modelo da loja virtual




O que eu estou fazendo de errado ? como eu posso resolver este problema.

muito obrigado galera

This message was edited 3 times. Last update was at 26/11/2009 18:26:38

ignacio83
Java Ninja
[Avatar]

Membro desde: 16/03/2007 10:46:06
Mensagens: 253
Localização: São Paulo
Offline

Verifique se o Id do Produto não está nulo ao chamar o método armazenar

André de Fontana Ignacio
[MSN]
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

O objeto pode estar no modo de detached. Aí o merge vai persistir mesmo. Se for esse o caso, tenta fazer o seguinte (pra atualizar):

Você muda o estado dele e depois atualiza ele no banco.

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
brunowc
Thread.start()
[Avatar]

Membro desde: 22/11/2008 16:33:24
Mensagens: 32
Offline

Entao ignacio83 , o id esta preenchido ...


Andre Brito

Como eu insiro isto na logica do dao que eu estou usando ... ?
brunowc
Thread.start()
[Avatar]

Membro desde: 22/11/2008 16:33:24
Mensagens: 32
Offline

pessoal, existe outra maneira de resolver este problema ?
Andre Brito
JWizard

Membro desde: 21/07/2007 17:44:31
Mensagens: 2485
Localização: Paraná
Offline

No atualiza, tente fazer assim:

Como organizar o GUJ.
Meu Twitter.
Meu blog.
Future proofing means making code easy to change, not trying to anticipate every possible way your code might need to change.
[WWW]
brunowc
Thread.start()
[Avatar]

Membro desde: 22/11/2008 16:33:24
Mensagens: 32
Offline

E ae Andre, eu coloquei esse codigo no meu dao e mesmo assim continua criando um novo dado , e nao atualiza ...
existe alguma outra maneira de resolver isso ?
lgweb
GUJ Master

Membro desde: 03/05/2007 20:59:55
Mensagens: 1048
Localização: Curitiba-PR
Offline

cara poste o codgo onde vc altera os dados do produto antes de atualizar pra mim dar uma olhada,pode ser ai que esta o problema.

Vc gosta de criar topicos duplicados?
Nao utiliza a busca antes de postar?



veja:
http://www.youtube.com/watch?v=8zFYt1_0FUE&NR=1
[Email] [WWW] [MSN]
thimor
JavaTeenager
[Avatar]

Membro desde: 20/03/2007 17:53:08
Mensagens: 190
Localização: Natal
Offline

vc esta usando JSF ? se for, o Bean deve estar no escopo de request. entao é so alterar no faces-config.xml para session. tb tive esse problema e foi isso.

Quem ensina, exercita seu conhecimento.
[MSN] [ICQ]
brunowc
Thread.start()
[Avatar]

Membro desde: 22/11/2008 16:33:24
Mensagens: 32
Offline

e ae igweb, o codigo ta ai embaixo

eu estou usando o vraptor na camada de controle, o metodo que eu estou usando pra atualizar é esse


O form esta assim



brunowc
Thread.start()
[Avatar]

Membro desde: 22/11/2008 16:33:24
Mensagens: 32
Offline

thimor wrote:vc esta usando JSF ? se for, o Bean deve estar no escopo de request. entao é so alterar no faces-config.xml para session. tb tive esse problema e foi isso.


nao thimor, eu estou usando o vraptor...
lgweb
GUJ Master

Membro desde: 03/05/2007 20:59:55
Mensagens: 1048
Localização: Curitiba-PR
Offline

Quem chama o metodo ??

Vc gosta de criar topicos duplicados?
Nao utiliza a busca antes de postar?



veja:
http://www.youtube.com/watch?v=8zFYt1_0FUE&NR=1
[Email] [WWW] [MSN]
brunowc
Thread.start()
[Avatar]

Membro desde: 22/11/2008 16:33:24
Mensagens: 32
Offline

Entao funciona da seguinte maneira, tem a lista de produtos, onde tem um link que redireciona para o formulario para editar .
para editar dado, é esse o metodo

na pagina de listagem, tem esse link pra editar




dai ele só manda pro jsp para ser editado, e o action do form é esse



que no controlador é esse metodo



que chama o metodo atualiza do dao


This message was edited 2 times. Last update was at 18/11/2009 15:38:03

lgweb
GUJ Master

Membro desde: 03/05/2007 20:59:55
Mensagens: 1048
Localização: Curitiba-PR
Offline

entaum cara , nunca utilizei VRaptor mas me parece que esta td correto com seus metodos,so se certifique que em nenhum lugar do seu codigo vc esteja usando um new Produto() ,pois esta e uma das causas destes tipos de erro, se vc esta com o id preenchido antes de salvar dentro do metodo armazena ele deveria somente atualizar ,verifique o valor do id antes de salvar e pegue o retorno do metodo merge, ele retorna um objeto,peque este objeto e verifique seu id so para confirmar, pode ser com print's msm:


Vc gosta de criar topicos duplicados?
Nao utiliza a busca antes de postar?



veja:
http://www.youtube.com/watch?v=8zFYt1_0FUE&NR=1
[Email] [WWW] [MSN]
brunowc
Thread.start()
[Avatar]

Membro desde: 22/11/2008 16:33:24
Mensagens: 32
Offline

Huuuuuuuuuuum, esta dando um new produto sim..

neste trecho do codigo, na classe daofactory...



entao ai que deve estar o problema .... como eu poderia resolver isso?

This message was edited 1 time. Last update was at 22/11/2009 11:09:40

 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team