Я использую Struts 2 и Hibernate. У меня есть простая таблица с полем Дата, в которой хранится информация о том, когда произошло определенное действие. Это значение даты отображается в моем JSP.
У меня проблема в том, что после того, как hibernate обновляет базу данных, страница jsp не обновляет значение даты. В качестве рабочего примера:
date1 = 22/06/11 15:00:00
date2 = 22/06/11 16:00:00
Когда я обновляю вручную (F5), тогда все в порядке - значение даты изменяется с date1
на date2
(т.е. с 15:00 до 16:00). Но если я продолжу обновлять, то JSP однажды покажет date1 и в следующий раз date2 и так далее.
В моем hibernate.cfg есть следующее:
<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="hibernate.cache.use_query_cache">false</property>
Я экспериментировал с evict Hibernate (), flush (). Я попытался добавить скриптлет (да, я знаю - скриплет - плохая практика):
<%
response.setHeader( "Pragma", "no-cache" );
response.setHeader( "Cache-Control", "no-cache" );
response.setDateHeader( "Expires", 0 );
%>
Я немного застрял здесь - любая помощь приветствуется.
Спасибо,
Дам
EDIT:
У меня есть класс DaoEngine, который расширяют все мои DAO.
public class DaoEngine
{
@SuppressWarnings("unchecked")
private static final ThreadLocal session = new ThreadLocal();
private static final SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
protected DaoEngine()
{
}
@SuppressWarnings("unchecked")
public static Session getSession()
{
Session hibSession = (Session) DaoEngine.session.get();
if (hibSession == null)
{
hibSession = sessionFactory.openSession();
DaoEngine.session.set(hibSession);
}
return hibSession;
}
protected void begin()
{
getSession().beginTransaction();
}
protected void commit()
{
getSession().getTransaction().commit();
}
@SuppressWarnings("unchecked")
protected void rollback()
{
try
{
getSession().getTransaction().rollback();
}
catch (HibernateException e)
{
}
try
{
getSession().close();
}
catch (HibernateException e)
{
}
DaoEngine.session.set(null);
}
@SuppressWarnings("unchecked")
public static void close()
{
getSession().close();
DaoEngine.session.set(null);
}
public void clearAll()
{
getSession().clear();
}
}