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.
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?
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.
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.
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