当我们用Spring+HibernateTemplate整合项目时,会遇到这样一个问题:向数据库中写数据时,不报错也没有异常抛出,提示写入成功,但就是在数据库中并没有数据写入成功。
* 问题原因 *
数据被缓存了,但未flush
解决方法
在save方法后添加hibernateTemplate.flush();
推荐:
在hibernate.cfg.xml文件中添加:
<property name="connection.autocommit">true </property>
如果是用Spring管理的hibernate,则在applicationContext.xml文件中添加:
<property name="hibernateProperties">
<props>
<prop key="connection.autocommit">true</prop> <!-- 添加这个 -->
<props>
</property>
另外一个很严重的问题
大家在测试的时候,应该检查测试类是否有事务管理,(相当重要)
买一送一(哈哈)
这里顺便说下关于大家在通过HibernateTemplate操作数据库时,报的只读权限的问题。
解决方案:
<!--配置hibernateTemplate对象-->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<!--注入sessionFactory-->
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="checkWriteOperations" value="false"/> <!-- 添加这个 -->
</bean>