Hibernate trazendo objetos desatualizado
Pessoal, ao realizar uma pesquisa com o hibernate, ele está me trazendo um objeto anterior, por exemplo:
Se o nome de um produto é Geladeira 250 e eu altero diretamente no banco o nome do produto para Geladeira Frost Free, ele me trás Geladeira 250.
Segue o código da pesquisa:
public final Entity getById(Long id) throws CommunicationFailureDataBaseException {
Entity instance = null;
try {
instance = (Entity) getEntityManager().find(classePersistente, id);
}
Já tentei:
// getEntityManager().getEntityManagerFactory().getCache().evictAll();
getEntityManager().clear();
// getEntityManager().flush(); getEntityManager().refresh(instance);
E nenhum deles funciona, o objeto ainda vem o anterior. Alguém pode ajudar?
Conteúdo retirado do grupo Java Brasil no Facebook.
"Tenta fazer um singleton no factory"
"Acredito que o problema está no estado em que o seus objetos se encontram, existem 3 estados de objetos no hibernate : managed, transient e detached. O esta acontecendo e que você está tentando atualiza um objeto que está no "estado errado ", você tem q ter em mente que sempre que você trabalha com hibernate você terá de trazer os objetos para o estado managed, garantindo assim que a representação desse objeto será idêntica à entidade do banco . O seu problema ocorre por que você está tentando atualizar um objeto q está como detached, ou seja, ele esta criado no banco agora precisa ser atualizado ! Por isso ele sempre traz a geladeira como 250 por que seu update só está executando na aplicação e não no banco! Para resolver o problema vc precisa trazer ele para managed novamente. Você pode usar o método do manager chamado merge()."
"Você pode carregar seu objeto pelo método find, depois setar às alterações, e por último em vez de usar o método persist() utilize o merge()"
Qual versão do hibernate você está usando?