<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
在hibernate中进行配置这条信息的时候,我们就会看到hibernate发出的语句。
很多时候,你写了一些操作,没有抛出异常就是不发出sql语句,导致数据库没有进行修改。
分析一下我最近遇到的原因:
1,最恶心的一种。myeclipse和浏览器和tomcat都会存在一些缓存,你修改的代码是没有及时发布的。导致操作失效。
解决办法:将tomcat中localhost下,和webapp的项目都删除。重新发布。重启myeclipse。同时结束所有myeclipse的线程。ctrl+f5刷新浏览器。
2.事务没有配置成功。
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"
rollback-for="java.lang.Exception" />
<tx:method name="delete*" propagation="REQUIRED"
no-rollback-for="java.lang.Exception" />
<tx:method name="update*" propagation="REQUIRED"
rollback-for="java.lang.SQLException" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
如果是这么配置的事务。那么你就要注意的你的方法,是不是与配置的事务方法相同。
如果你是
<!-- 使用注解,在Service层的类上添加@Transcational() -->
<tx:annotation-driven transaction-manager="trManager"
proxy-target-class="true" />
这么配置的事务,你要注意,是否在指定的类上,放上@transcational注解。
同时注意你的注解扫描包。
3.更新的时候,你的数据没有发生变化。
hibernate在更新的时候,我们很多时候采取,根据id进行查询的到持久化对象,对对象进行修改,进行保存。如果你的对象没有发生修改,那么就不会发生update语句。
比如你setNum(num++);这就没有进行修改。