| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2009 11:49:19
|
jopss
Java Ninja
![[Avatar]](/images/avatar/0d2f28fbfb3c845930a1cba0672950b1.jpg)
Membro desde: 13/07/2006 18:32:16
Mensagens: 281
Localização: Campo Grande/MS
Offline
|
Olá... tenho a mesma dúvida que este antigo tópico, mas não achei solução: http://www.guj.com.br/posts/list/15/27331.java
Basicamente tenho uma tabela no banco de dados e um objeto mapeado para ele.
Quero alterar uma entrada nessa tabela, entao crio um objeto, seto seu id e 2 campo que quero alterar, e o hibernate "nula" todos os outros campos daquela entrada!
Fazer o "load" ou um "select" para tal objeto é um custo muito desnecessário, pois tem vários campos, e a ação é efetuada a todo o momento. Existe como alterar somente os campos que eu quero sem precisar fazer um "UPDATE" na mão?
Dei uma pesquisada e nao achei.
Além do mais, ocasiona erro ao fazer UPDATE por HQL. Pode ser problema do driver SqlServer. No SQL gerado ele insere uma virgula logo após o nome da tabela (classe), e me retorna erro.
Da HQL:
Me retorna a SQL e o erro:
vlw!!
jopss
This message was edited 3 times. Last update was at 03/02/2009 14:35:57
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2009 15:46:47
|
jopss
Java Ninja
![[Avatar]](/images/avatar/0d2f28fbfb3c845930a1cba0672950b1.jpg)
Membro desde: 13/07/2006 18:32:16
Mensagens: 281
Localização: Campo Grande/MS
Offline
|
Só para constar, o problema da "virgula" não se resolveu.
Mas, consegui fazer o que eu queria usando o atributo dynamic-update="true" (XML) no mapemaneto da classe. Com isso eu faço session.get (hibernate) para retornar o objeto "novo" com o id, insiro somente os campos necessários e uso o update normalmente.
Funfo!!
Mas, Verifiquei na net que tem vários post sobre problemas com "dynamic-update", mas não cheguei a ver todos os erros..... alguem já obteve algum problema usando-o ???
This message was edited 1 time. Last update was at 03/02/2009 15:47:04
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2009 15:53:36
|
spycall
JavaTeenager
![[Avatar]](/images/avatar/c54bc2ded4480856dc9f39bdcf35a3e7.jpg)
Membro desde: 26/04/2005 14:29:59
Mensagens: 189
Localização: São paulo
Offline
|
Vc pode usar um HQL para fazer update só nos campos que vc quer.
Use o createQuery do hibernate
http://www.hibernate.org/hib_docs/reference/en/html/batch-direct.html
|
No mundo existem 10 tipos de pessoas, as que conhecem e as que não conhecem binário. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/02/2009 15:56:33
|
jopss
Java Ninja
![[Avatar]](/images/avatar/0d2f28fbfb3c845930a1cba0672950b1.jpg)
Membro desde: 13/07/2006 18:32:16
Mensagens: 281
Localização: Campo Grande/MS
Offline
|
pois é.... no caso o HQL ocorre o problema que mencionei...... da "virgula".....
e tbm não funfo como queria ainda!!
o "get" do hibernate me retorna o objeto populado. Pensei que retornaria somente uma referencia com seu id...... Então é como se eu fizesse um select ou load........
inda não foi dessa vez...
jopss
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/02/2009 15:27:38
|
liss
JavaBaby
Membro desde: 27/03/2006 10:56:19
Mensagens: 81
Offline
|
jopss
,
o statement de update está errado:
não coloque a vírgula após o nome da tabela. acho que isso não funciona nem com sql.
[]s
Liss
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 04/02/2009 15:51:51
|
jopss
Java Ninja
![[Avatar]](/images/avatar/0d2f28fbfb3c845930a1cba0672950b1.jpg)
Membro desde: 13/07/2006 18:32:16
Mensagens: 281
Localização: Campo Grande/MS
Offline
|
entao, quem faz essa "caca" ae é o hibernate!
eu faço o HQL com os objetos e ele me retorna isso....
jopss
|
|
|
 |
|
|