struts + hibernate 后台页面修改数据后,前台页面显示的内容新旧数据交替出现。请高手帮忙分析下原因
目前问题是能解决的,但是不知道原因。有高手能给分析下吗
就是修改完记录后,进数据库里直接看,记录确实更改了,
但是每次刷新前台页面,有时候是显示最新的数据内容,有时候又是显示修改前的数据内容。
我上网找了下,能做的都做了。
映射配置里 lazy设成false了。
DAO里修改的方法,flush(), commit(), closs(), 都做过了
hibernate配置里 2级缓存也禁用了。
但是问题依然存在。而这样的情况,我在本机调试 始终没有出现数据混乱,部署到服务器上就会出现,两边都用的weblogic8.1。
dao里修改的代码:
public void attachDirty(PageList instance) { Session session = HibernateSessionFactory.getSession(); if(instance!=null){ Transaction ts=null; try{ ts=session.beginTransaction(); session.saveOrUpdate(instance); session.flush(); ts.commit(); }catch(Exception ex){ if(ts!=null){ ts.rollback(); } } } session.close(); }
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider </property> <property name="hibernate.cache.use_second_level_cache">false</property>
<%//...... PageListDAO pdao=new PageListDAO();// pdao.getSession().close();[color=#FF0000]如果加这句话,问题就解决了,但是不知道原因。[/color] PageList ptemp=pdao.findById(pageid);//然后out print 该记录的内容...%>
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
/**
* Rebuild hibernate session factory
*
*/
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
/**
* Close the single hibernate session instance.
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
/**
* return session factory
*
*/
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
/**
* return session factory
*
* session factory will be rebuilded in the next call
*/
public static void setConfigFile(String configFile) {
HibernateUtil.configFile = configFile;
sessionFactory = null;
}
/**
* return hibernate configuration
*
*/
public static Configuration getConfiguration() {
return configuration;
}
}
[解决办法]
dc是:
DetachedCriteria