Pessoal estou com dúvida simples, porém não sei como resolver, quero executar uma regra de negócio caso o usuário altere o valor de um campo, mas não consigo verificar se esse valor foi alterado porque quando executo uma query no banco para pegar o valor do campo o hibernate não realiza a busca e pega o valor do cache primário. Como posso resolver isso?
final String loginBD = usuarioDAO.findLoginById ( usuario.getId () ); //Essa busca me retorna o valor atual do usuário em cache e não no banco de dados
if ( !loginBD.equals ( usuario.getLogin () ) )
{
changePassword ( usuario, "trocar" );
}
usuarioDAO.makePersistent ( usuario );
opa,
se for uma aplicação web e estiver trabalhando com checagem de alterações de valores apartir da tela populada…pode usar onChange do html mesmo…
talvez funcione…
Andei pensando nisso…
Mais gostaria de executar a regra inteira na camada de negócio no método que salva a minha Entidade.
Resolvi da seguinte forma:
Repeti o mapeamento do campo na entidade, deste modo dois atributos são carregados ao buscar a entidade no banco, como só altero um atributo eu consigo comparar com o outro.
Claro o atributo “replicado” como insertable=false e updatable = false
@Column( length = 30, nullable = false )
private String loginSimples;
@Column( name = "loginSimples", updatable = false, insertable = false )
private String loginSimplesBD;