首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

因session会话有关问题Hibernate的更新数据库操作无效

2012-10-08 
因session会话问题Hibernate的更新数据库操作无效  最近一段时间做项目的时候,自已在修改一个功能点,要更

因session会话问题Hibernate的更新数据库操作无效
  最近一段时间做项目的时候,自已在修改一个功能点,要更改已获取的数据列表中的某行记录内容,并将更改保存到数据库中,已写好了所有业务代码,在调用DAO层Hibernate方法执行数据库更新时,发现一个有意思的问题,程序执行数据库更新操作无任何异常,但是在刷新列表时,却发现该行数据根本没有更改。
  经过分析与查找,确认是hibernate缓存问题,导制数据库操作无法真正的执行。具体原因是如何导制的,我没有正确答案,但可以肯定跟缓存有关。
具体代码如下:

 /** * 修改指定流程下的节点内容 * @param lcbh * @param lcmc * @param oldJdbh * @param oldJdmc * @param newJdbh * @param newJdmc * @return * @throws Exception */public boolean updateLcjdDb(String lcbh,String lcmc,String oldJdbh,String oldJdmc,String newJdbh,String newJdmc) throws Exception {Session session = this.getHibernateTemplate().getSessionFactory().openSession();Transaction tx =null;String hql="update BFsYwbd set jdph=?,jdmc=? where lcph=? and lcmc=? and jdph=? and jdmc=?";int count=0;try{tx = session.beginTransaction();Query query=this.getSession().createQuery(hql);query.setString(0, newJdbh);query.setString(1, newJdmc);query.setString(2, lcbh);query.setString(3, lcmc);query.setString(4, oldJdbh);query.setString(5, oldJdmc);count=query.executeUpdate();tx.commit();session.flush();}catch(Exception e){tx.rollback();throw e;}return count>=1?true:false;}


从上面的代码中可以看出,其实就是将getSession()方法获取Session会话对象,改为通过this.getHibernateTemplate().getSessionFactory().openSession()获取Spring所代码管理的会话对象。






热点排行