hibernate的SQLQuery和spring的事务控制问题 事务是定义在业务层,dao中不管用什么事务都会生效,不会出现问题,除非没加到事务中。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不好意思,我把意思说错了。不是事务失效了。实际上是这样的,在 service层的同一个方法里面:我使用 createQuery加载了一条数据,然后 update了这条数据。然后再使用 createSQLQuery查询这条数据,并输出到控制台。结果发现查询出来的这条数据是 update之前的状态。原因可能是 SQLQuery是直接从物理数据库中取数据,而不是从 hibernate缓存中取数据。这样 SQLQuery是不是就不能用在这个事务里面了呢? update执行完毕后,只是把记录添加到了缓存里和一个updates的集合里,并没有完成真正的数据库更新操作你可以采用两种方式完成update操作1 事务提交之后再进行createSQLQuery2 update调用之后,后面加上session.flush();然后再createSQLQuery 1 事务提交之后再进行createSQLQuery 系统有一个实现了很多查询方法的 BaseDao,其中 Query和 SQLQuery都是混着用的。 我很难限制程序员在同一个事物里能用哪些方法和不能用哪些方法。2 update调用之后,后面加上session.flush();然后再createSQLQuery 这样做事务就真的没用了吧?感谢 Landor2004 的帮助,下班前结贴。 实现机制就是这样,update之后再用session.flush(),事务是仍然有效的! sql语句中排序时怎么同时满足两个条件 如何动态实现版本的模块控制 求个排列组合的算法问题,编程输出结果 验证码的实现 请教JSF的问题,很头疼,有经验的过来指点一下。来着有分~ hibernate中如何实现表中的唯一约束 jB做的工程怎样导出。EXE文件呀 为什么我的Eclipse里看不到Tomcat? 请教大家一个xml parser的问题? request的文题 Struts标签<html:file>的问题 关于jsp+JavaScription中的一个小问题
实际上是这样的,在 service层的同一个方法里面:
我使用 createQuery加载了一条数据,然后 update了这条数据。
然后再使用 createSQLQuery查询这条数据,并输出到控制台。
结果发现查询出来的这条数据是 update之前的状态。
原因可能是 SQLQuery是直接从物理数据库中取数据,而不是从 hibernate缓存中取数据。
这样 SQLQuery是不是就不能用在这个事务里面了呢?
系统有一个实现了很多查询方法的 BaseDao,其中 Query和 SQLQuery都是混着用的。
我很难限制程序员在同一个事物里能用哪些方法和不能用哪些方法。2 update调用之后,后面加上session.flush();然后再createSQLQuery
这样做事务就真的没用了吧?感谢 Landor2004 的帮助,下班前结贴。