Boa tarde,
estou utilizando hibernate com annotations so que em uma tela em que eu faço uma consulta para listar os exames, o hibernate esta guardando no cache da sessao causando inconsistencia em consultas posteriores.
A solução que tive foi dar um session.clear(); ou session.envict(Exame.class);
Gostaria de saber se tem como configurar o hibernate para que ele nao guardasse os dados no cache da sessão.
[code]public List busca(Exame exame, Long pageSize,
Long pageNumber) throws DAOException {
try {
Classe utilitaria para manipulacao das sessoes com o Hibernate.
*/
public class DAOSession {
private static SessionFactory SF;
static {
AnnotationConfiguration cfg = new AnnotationConfiguration();
try {
SF = cfg.configure().buildSessionFactory();
}
catch (HibernateException e) {
throw new RuntimeException(e.getMessage());
}
}
public static final ThreadLocal session = new ThreadLocal();
/**
* Cria uma nova sessao.
*/
@SuppressWarnings("unchecked")
public static void openSession() {
try {
session.set(SF.openSession());
}
catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
/**
* Retorna a sessao atual.
* @throws RuntimeException se o método for chamado e não existir uma sessão.
*/
@SuppressWarnings("unchecked")
public static Session currentSession() {
Session s = (Session) session.get();
// Open a new Session, if this Thread has none yet
if (s == null) {
s = SF.openSession();
session.set(s);
}
return s;
}
/**
* Fecha a sessao atual.
*/
@SuppressWarnings("unchecked")
public static void closeSession() {
try {
Session s = currentSession();
session.set(null);
s.flush();
s.close();
}
catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
public static void hsqlCleanup(Session s) {
try {
s.connection().createStatement().execute("SHUTDOWN");
} catch (Exception e) {
}
}