因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;}