Alterar Configuração Hibernate para não gravar todos os Atributos

Olá…
Tem como fazer o hibernate não alterar algum atributo de um objeto?
Pois tenho o seguinte.

usuarioCon.setSenha();

Mas qdo a acao q eu passar for ‘alterar’, não queria q a senha fosse gravada, mas que fosse alterado apenas os outros atributos.
Tentei retirar este ‘setSenha’, quando for alterar, mas o hibernate grava igual.

Desde já,
Obrigado!

Não entendi muito bem o que você quer. Mas se você quer em alguns momentos gravar um atributo e em outros não, isso não há como. O Hibernate grava tudo que tem no objeto, exceto campos que tenham a anotação @Transient ou o modifier transient. Aliás isso funciona para qualquer serialização, desde persistencia em banco como gerar XML. O que for marcado como transient não é serializado.

é que é assim, o meu campo ‘senha’ é criptografado usando MD5, pois bem, os dados do usuário podem ser alterados por um determinado tipo de usuário, menos a senha do usuário.

Sendo assim, o hibernate está gravando mesmo se eu retirar o usuarioCon.setSenha();

Até aí sem problemas, pois a senha gravada é a mesma que tem no banco, mas como todas as senhas que são gravadas utilizam criptografia MD5, a senha gravada não será a mesma, pois estaria gerando uma nova criptografia.

Nesse sentido, eu poderia utilizar sua sugestão de marcá-lo com Transient?

Obrigado!

se marcar como transient, além de não alterar, tb não realizará o insert da senha em um novo objeto

ah bom… então tah descartado fazer isso…

o pior que o q foi criptografado nao tem como descriptografar, dai não poderei fazer o q pensei…

mas se alguem tiver + alguma ideía, por favor, poste aí…

Abração!

Há discuções enormes sobre isso, mas eu não sou a favor de enviar a entidade direto para a tela exatamente para evitar isso e outros males. É o tão criticado DTO, que em casos como esse ajuda muito.

É q jah to usando tal objeto numa infinidade de lugares, não sei se seria vantagem utilizar DTO, pois poderia me dar problemas em outros lugares…

Parceiro seguinte! isso que vc está querendo se chama “customizar o sql no hiberte”.

Primeiro, o que vc está usando para mapear as entidades? XML ou Anotações?
Se for anotações vc precisa criar uma consulta nomeada com anotações, é bem simples.
Se for XML vc precisa vc precisa criar uma consulta no nomeada onde vc irá fazer um referencia para o arquivo onde tiver a consulta. tipo
<classe name=“User” table=“USERS”>
<id name =“id” column=“USER_ID”>…

<sql-insert>
AQUI VC DEFINI SUA CONSULTA DE ACORDO COM O FORMATO DE SQL DO SEU BANCO (MYSQL, DB2, ORACLE…)
<sql-insert>

</class>

flw. Livro de referencia Java Persistence com Hibernate pg 355 na minha opinão é o melhor livro sobre hibernate já escrito até a data desse post.

to usando xml…

vo tentar fazer isso… mas nao d´pa pra usar HQL ao inves de ??

abs

Acredito que não!

Não é por nada! mas… porque vc não tenta utilizar as anotações é menos trabalhoso. utiliza o hibernate tools no eclipse. vc pode fazer o mapeamento objeto relacional de duas formas. Do banco para classes (recomendado) ou das classes pro banco

flw

é q o projeto q estou trabalhando já tá bem avançado, e todo ele já está usando xml para fazer os mapeamentos

dai daria muito mais trabalho alterar, hehehe…

flw