精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-04-19
<property name="defaultAutoCommit" value="true" />
|
|
返回顶楼 | |
发表时间:2012-04-19
啧啧。能读不能写是最常见的问题之一。事务没加上。
有很多种方法可以加事务的,看到楼上有解决方案我就不贴了 |
|
返回顶楼 | |
发表时间:2012-04-20
spring事务是不会对只读事务中的更新数据的操作提交到数据库中的。
|
|
返回顶楼 | |
发表时间:2012-04-20
把
@Transactional(readOnly = true) public class UserManager { 改成 @Transactional(readOnly = false) public class UserManager { 试试。 如果成功了,说明你是在一个 readOnly的方法中调用的你那个保存数据的方法,导致保存数据的readOnly=false失效,如果是的话,修改下调用顺序,保证保存数据的方法是事物的入口即可,即在它之前没有事物设置即可 |
|
返回顶楼 | |
发表时间:2012-04-20
把
@Transactional(readOnly = true) public class UserManager { 改成 @Transactional(readOnly = false) public class UserManager { 这就是正解,其他人都是瞎指挥。 看到Transactional(readOnly = true) 马上就知道问题了。 再加上<property name="defaultAutoCommit" value="false" /> 说明spring开启了只读事务,而jdbc配置有是不自动提交的。 http://hi.baidu.com/jian20080808/blog/item/a40a7ec2bc56cc130ef4778b.html |
|
返回顶楼 | |
发表时间:2012-04-20
sohua2000 写道 把
@Transactional(readOnly = true) public class UserManager { 改成 @Transactional(readOnly = false) public class UserManager { 这就是正解,其他人都是瞎指挥。 看到Transactional(readOnly = true) 马上就知道问题了。 再加上<property name="defaultAutoCommit" value="false" /> 说明spring开启了只读事务,而jdbc配置有是不自动提交的。 http://hi.baidu.com/jian20080808/blog/item/a40a7ec2bc56cc130ef4778b.html 没有吧,你仔细看清楚,他的saveUser()方法上加了@Transactional(readOnly = false)的。 |
|
返回顶楼 | |
发表时间:2012-04-21
<property name="defaultAutoCommit" value="true" />
|
|
返回顶楼 | |
发表时间:2012-08-17
jinnianshilongnian 写道 xql80329 写道 xieyongwei 写道 在说HibernateDaoSupport 和 HibernateTemlate 的
请不要来躺混水 OK? 是在解决问题。 你到是给个解决方案。 解决方案 我之前已经给出来了 他昨天晚上解决了 解决方案是什么? 我也遇到了同样的问题。。 配置了申明式事务,show_sql为true 但是只能查询,增删改全都不成功。。连打印sql都没有 也不报错 。。求高手解惑 |
|
返回顶楼 | |
发表时间:2012-08-18
hekuilove 写道
jinnianshilongnian 写道
xql80329 写道
xieyongwei 写道
在说HibernateDaoSupport 和 HibernateTemlate 的
请不要来躺混水 OK? 是在解决问题。 你到是给个解决方案。 解决方案 我之前已经给出来了 他昨天晚上解决了 解决方案是什么? 我也遇到了同样的问题。。 配置了申明式事务,show_sql为true 但是只能查询,增删改全都不成功。。连打印sql都没有 也不报错 。。求高手解惑
他的是配置文件的问题,如下是我的回复 我 写道
怀疑你springMVC 部分配置错了,请在SpringMVC的配置文件中 将@Service、@Repository排除。
可以参考 最新SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结 进行排除 可以参考 最新SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结 进行排除
我 写道
因为OpenSessionInViewFilter中Session的FlushModel默认是 MANUAL,,因此如果service层没有实施事务的话 是不会commit的。
当然也可以通过在web.xml中设置(只有在没有服务层事务时才设置) <init-param> <param-name>flushMode</param-name> <param-value>AUTO</param-value> </init-param> 这里说明你的服务层事务没有实施成功 AopUtils.isAopProxy(userManager) 看看 如果true表示AOP代理成功 否则失败,检查配置文件
kimimo 写道
jinnianshilongnian 写道
因为OpenSessionInViewFilter中Session的FlushModel默认是 MANUAL,,因此如果service层没有实施事务的话 是不会commit的。 当然也可以通过在web.xml中设置(只有在没有服务层事务时才设置) <init-param> <param-name>flushMode</param-name> <param-value>AUTO</param-value> </init-param> 这里说明你的服务层事务没有实施成功 AopUtils.isAopProxy(userManager) 看看 如果true表示AOP代理成功 否则失败,检查配置文件 谢谢你的帮助,通过你说的要把springmvc的package scan指定到controller所在的包,以及去掉apache shiro配置文件中的 Java代码 <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/> <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> <property name="securityManager" ref="securityManager"/> </bean> 这段配置事务就这正常了。 暂时还没搞清上面的那个配置为什么会导致事务配置不成功。
1、你是否配置了OpenSessionInView 2、是否是用的springMVC,而且在springMVC的配置文件中是否 只扫描 web层(通过你说的要把springmvc的package scan指定到controller所在的包) |
|
返回顶楼 | |