| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 08:25:02
|
sun.freitas
Entusiasta Java
![[Avatar]](/images/avatar/534377b318b8a31992b8728b55bcd5f6.jpg)
Membro desde: 20/10/2009 14:33:18
Mensagens: 16
Offline
|
Caros colegas, estou com um pequeno problema quando vou alterar um registro existente no meu banco.
Carrego normalmente os dados o objeto com "return (Idioma) session.load(Idioma.class, id)" e os envio para o formulário de edição:
A classe idioma utilizada acima segue logo abaixo:
quando envio o formulário (com ou sem alteração), o objeto é atualizado, mas os campos que eu não declaro no formulário são setados como null, apagando desta forma informações que preciso, tais como a "datacriacao" de tal registro. Estou utilizando session.update(idioma) para atualizar, sendo que já testei com session.merge() tb e não funfou.
Como vocês têm feito para contornar essa situação?
Agradeço a atenção pessoal.
This message was edited 1 time. Last update was at 07/06/2011 18:27:23
|
SUN Freitas |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 09:49:08
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
um dos jeitos é vc fazer o seguinte:
- carrega o Idioma do banco pelo id
- copie os campos que vc sabe que vão vir do formulário do que veio como parâmetro pro que veio do banco
não precisa nem fazer o update, se estiver dentro de uma transação o hibernate já faz o update automaticamente
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 12:14:39
|
sun.freitas
Entusiasta Java
![[Avatar]](/images/avatar/534377b318b8a31992b8728b55bcd5f6.jpg)
Membro desde: 20/10/2009 14:33:18
Mensagens: 16
Offline
|
Lucas, seria mais ou menos isso aqui?:
Funfou legal utilizando try/catch. Mas terei que fazer isso sempre? e quanto a modelos que possuem trocentos atributos???
|
SUN Freitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 13:31:37
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
qual o motivo do try..catch?
a linha dao.altera(dbidioma) não é necessária, o hibernate vai fazer isso automaticamente
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 18:12:05
|
sun.freitas
Entusiasta Java
![[Avatar]](/images/avatar/534377b318b8a31992b8728b55bcd5f6.jpg)
Membro desde: 20/10/2009 14:33:18
Mensagens: 16
Offline
|
Lucas, o eclipse acusou que era necessário realizar um try...catch. E outra. neste trecho do código ainda não foi iniciada uma transação, esta é iniciada dentro do IndiomaDao.atualiza(idioma). No caso eu teria que copiar tudo pra lá?
|
SUN Freitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 18:15:47
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
se a transação está dentro do atualiza, então deixe como está...
o eclipse só vai te pedir pra fazer try..catch(Exeption) se algum dos métodos que vc está chamando está com throws Exception.
evite fazer isso
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 18:19:33
|
sun.freitas
Entusiasta Java
![[Avatar]](/images/avatar/534377b318b8a31992b8728b55bcd5f6.jpg)
Membro desde: 20/10/2009 14:33:18
Mensagens: 16
Offline
|
De boa então... vo tentar criar um mecanismo aqui genérico pra usar nas outras classes utilizando esta idéia aew.
Muito obrigado pela ajuda Lucas, notei que você é bastante ativo aqui no fórum.
Acho que posso dar este tópico como resolvido.
|
SUN Freitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 18:28:34
|
sun.freitas
Entusiasta Java
![[Avatar]](/images/avatar/534377b318b8a31992b8728b55bcd5f6.jpg)
Membro desde: 20/10/2009 14:33:18
Mensagens: 16
Offline
|
Lucas, só mais uma dúvida. Por curiosidade, a outra forma seria carregar todos os dados do objeto no formulário?
|
SUN Freitas |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 18:32:52
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
é outra forma, mas é um pouco insegura. Qualquer usuário malicioso do sistema pode editar os inputs hidden que vc colocaria no formulário e mudar campos que vc não queria que fossem mudados.
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/06/2011 19:13:00
|
sun.freitas
Entusiasta Java
![[Avatar]](/images/avatar/534377b318b8a31992b8728b55bcd5f6.jpg)
Membro desde: 20/10/2009 14:33:18
Mensagens: 16
Offline
|
é vero!!!
|
SUN Freitas |
|
|
 |
|
|