Hibernate: update/merge somente em alguns campos.  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
jopss
Java Ninja
[Avatar]

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

jopss
Java Ninja
[Avatar]

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

spycall
JavaTeenager
[Avatar]

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.
[MSN]
jopss
Java Ninja
[Avatar]

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
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
jopss
Java Ninja
[Avatar]

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
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team