Na minha camada de persistência, estou utilizando JPA (Toplink), tenho minhas DAOs que estão funcionando.
O meu problema está sendo o seguinte: quando recupero uma informação do banco, o GERENCIADOR começa a trabalhar com os dados que estão em “cache”, porém outra aplicação (DELPHI) acessa os mesmos dados.
Quando faço uma pesquisa, ele faz “cache” destes dados e não volta ao banco, a outra aplicação altera os dados, a minha informação fica desatualizada, pesquisando cheguei até o método EntityManager.refresh(Objeto), este cara resolveu o meu problema nas situações que tenho o retorno simples (getSingleResult) mas nos casos que tenho um ResultList não consegui achar solução.
Este método sempre traz a informação atualizada
public Usuario Pesquisar(String email){
Usuario usuario = null;
String sql = “select u from Usuario u where u.email = '” + email + “’”;
usuario = (Usuario) entityManager.createQuery(sql).getSingleResult();
entityManager.refresh(usuario);
return usuario;
}
Este não
public List Lista(String email)
{
Query query = entityManager.createQuery(“select u from Usuario u where u.email like :email”);
query.setParameter(“email”, “%” + email + “%”);
List usuarios = query.getResultList();
return usuarios;
}