`

Proxool+hibernate+spring时事务自动回滚导致无法提交的问题解决

    博客分类:
  • Java
阅读更多

这个问题整了我几乎一个下午的时间。。。。。

 

项目需要用到双数据源,而对于连接池,我选择了备受好评的Proxool,结果在spring配置了两个数据源,测试事务的时候,发现不发生错误,数据也无法提交出去。。。。。这让我纳闷了很久很久。。。一直以为是我双数据源配置错了,因为在SSH+proxool的情况下配置双数据源真的是第一次尝试。。。。。

 

后来逐步测试,直到把双数据源配置去了也发现不能插入,于是开始怀疑是数据库的问题。。。结果不是,后来在想,难道proxool的配置被我改烂了?想想也不至于那么差劲吧~~

 

然后重新恢复原始配置,发现proxool的数据源无法插入数据,但是能查询,换成jdbc则都可以,看来这是proxool的问题了。。。找到根源所在,立马对症下药。。。。但是网上也找不到很满意的答案,或者就是不了了之的,而且有这种问题的还真的都是使用proxool数据源的。。。。看来proxool本身存在很多问题啊。。。

 

再测试看看为什么proxool的数据出问题,在proxool和jdbc来回切换间,发现自增长主键的值并不连续的,开始怀疑proxool并不是没有提交查询,而是自动回滚了。。。。,打开SQL事件探测器追踪。。。

果然自动回滚了。。。。。

如下:

SET IMPLICIT_TRANSACTIONS ON
go
declare @P1 int
set @P1=1
exec sp_prepare @P1 output, N'@P0 nvarchar(4000),@P1 nvarchar(4000)', N'insert into testdatabase.dbo.users (name, deptcode) values ( @P0 ,  @P1 ) SELECT SCOPE_IDENTITY() AS ID', 1
select @P1
go
exec sp_execute 1, N'kk', NULL
go
IF @@TRANCOUNT > 0 ROLLBACK TRAN
go
IF @@TRANCOUNT > 0 COMMIT TRAN
SET IMPLICIT_TRANSACTIONS OFF
go

 

这个真是郁闷。。。。proxool这种问题也有阿,有查了下相关的资料,发现很少有人遇到这个问题,只有一个人也说发现了这样的问题,只要使用hibernate加载proxool配置文件就会这样。。。我是使用spring来控制hibernate参数,参数中配置了hibernate加载proxool文件的。。。。。。

 

于是使用了hibernate的参数hibernate.connection.autocommit,设为了true

再测试。。问题居然解决。。。。。至此告一段落。。。虽然proxool的口碑不错,但是配置至今,我发现这家伙的bug还是非常多阿。。。。至今为止已经遇到不少了,而且很多是众所周知的。。。而今天这个也算是一个大bug之一了。。。。

 

写出来也是为了方便遇到相同问题的朋友多一个解决方案,因为我在网上实在没有找到真正能够解决这个问题的方法。。。。

1
0
分享到:
评论
2 楼 weng 2011-06-29  
泪奔啊
纳闷了好久的问题终于解决了     
但还是纳闷,为啥要配置hibernate.connection.autocommit呢,默认不是自动提交了么
还有其它项目中没写这个配置的照样能正常添进去,又是为啥呢?
1 楼 wangking717 2009-09-08  
你用的是Spring的事务,那么提交方面有Spring的事务管理,而不是设置自动提交。你可以做一个测试。你那样做,事务就不起作用了。我也遇到你同样的问题。问题是我现在都还不知道为什么他会出这样的问题,怎么解决都不知道。
我的问题地址:
http://topic.csdn.net/u/20090907/22/b901fd3b-7325-434e-a9eb-8563823519ba.html

相关推荐

    spring3+hibernate3+proxool+mysql 超级企业J2EE DEMO(jar在下一个文件中,jar太大了)

    本项目采用当前主流的MVC和IOC框架spring 3、优秀的ORM框架hibernate和超级厉害的proxool数据库连接池。这个工程demo,是本人在企业应用中的项目缩影,绝对实用于企业的应用。 适合朋友: 1.一直用单独的servlet和...

    Spring+proxool+hibernate+struts2+aop_Jar包

    在"Spring+proxool+hibernate+struts2+aop"的整合中,Spring负责整体的依赖管理和事务控制,Struts2处理请求转发和视图展示,Hibernate处理数据库操作,而AOP则用来实现跨切面的关注点。 在提供的"Spring+proxool+...

    Spring+proxool+hibernate+struts2+aop整合的完整的简单项目

    **Spring+Proxool+Hibernate+Struts2+AOP整合详解** 在Java Web开发中,Spring、Proxool、Hibernate、Struts2和AOP(面向切面编程)是常用的框架和技术,它们各自承担着不同的职责,组合使用可以构建出高效、可维护...

    proxool+hibernate配置

    proxool与hibernate的配置

    Spring+Hibernate+Proxool连接池

    标题“Spring+Hibernate+Proxool连接池”意味着我们将讨论如何将这三大组件集成在一起,以构建一个高效且可扩展的Java Web应用。Spring作为容器,负责管理对象的生命周期和依赖关系;Hibernate则作为一个ORM(对象...

    spring3+hibernate3+proxool+jstl+oracle整合示例代码

    《Spring3+Hibernate3+Proxool+jstl+Oracle整合详解》 在现代Java Web开发中,集成各种框架以实现高效、灵活的应用程序已成为常态。本示例代码结合了Spring 3.0.4、Hibernate 3.5.0、Proxool 0.9.1、jstl,并利用...

    SSH (Struts2+Spring3+Hibernate3) +Proxool_亲测成功 费大劲了.zip

    文件`Spring3+Hibernate+Proxool_lj配置试验成功.txt`表明Spring3和Hibernate已经成功地集成了Proxool,这可能涉及到了Spring的`DataSource`配置,通过`<bean>`标签定义一个数据源,然后在Hibernate配置中引用它。...

    hibernate+proxool+Oracle库文件

    标题中的“hibernate+proxool+Oracle库文件”揭示了这个压缩包包含的是一个集成Hibernate ORM框架、Proxool连接池以及Oracle数据库驱动的软件库。这些组件都是Java开发中用于高效、稳定地处理数据库操作的重要工具。...

    PureMVC+Flex+BlazeDS+Spring+Hibernate.doc

    标题中的“PureMVC+Flex+BlazeDS+Spring+Hibernate.doc”指的是一项整合了多种技术的Web应用开发方案,这些技术包括PureMVC、Flex、BlazeDS、Spring和Hibernate。这篇文档可能是指导读者如何将这些技术结合在一起...

    hibernate+proxool+logback+mysql 非spring整合.zip

    自己写的hibernate+proxool的demo整合,亲测可用。项目可以拿来做做参考。如果有什么问题 欢迎留言作讨论。使用的话,请自己配置好proxool.xml文件 以及导入resources里面的sql(这里的sql是demo里面的entity表)

    truts2+hibernate3.2+spring2.5 proxool成步骤

    在构建企业级Java应用时,整合Struts2、Hibernate3.2和Spring2.5是一个常见的选择,因为这三个框架分别负责MVC模式的展现层、持久层管理和业务层的依赖注入。在这个过程中,使用Proxool作为数据库连接池能够有效地...

    ssh2(事务,AOP,IoC即DI)+EhCache+oscache+proxool+MySQL+SiteMesh+Gzip例子

    jQuery+json+struts2+spring3(事务,AOP,IoC即DI)+hibernte3+EhCache+oscache+proxool+MySQL+SiteMesh+Gzip lj例子

    struts2+hibernate3.2+spring2.5集成步骤

    以上就是Struts2+Hibernate3.2+Spring2.5的集成步骤。这个组合为开发者提供了强大的功能,包括MVC架构的组织、数据库操作的简化以及组件的依赖注入,从而提高了开发效率和代码质量。通过合理的配置和设计,可以构建...

    hibernate3+ proxool-0.9.1配置 和proxool-0.9.1.jar

    标题中的“hibernate3+ proxool-0.9.1配置”涉及到的是在Java开发中,使用Hibernate3 ORM框架与Proxool连接池的整合配置。Hibernate3是一款流行的持久层框架,它允许开发者用面向对象的方式来操作数据库,而Proxool...

    框架整合Spring MVC3.23+Spring3.23+Hibernate4.2.3+Activiti5.16.3+Proxool连接池

    框架整合Spring MVC3.23+Spring3.23+Hibernate4.2.3+Activiti5.16.3,三层架构dao,service,controller,使用proxool连接池(已配置好监听器),默认链接mysql数据库。可根据项目开发需要,做适当修改,各项配置齐全...

Global site tag (gtag.js) - Google Analytics