我又来问问题了 spring3.1 + hiberante4 的事务配置问题

BestTim 2012-04-01 04:26:04
applicationContext.xml内容如下:

<beans ...>
<!-- 扫描指定类包,处理spring注解 -->
<context:component-scan base-package="com.xxx.dao"></context:component-scan>
<context:component-scan base-package="com.xxx.service"></context:component-scan>

<!-- 配置hibernate -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" >
<property name="configLocations">
<value>WEB-INF/hibernate.cfg.xml</value>
</property>
</bean>

<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager" >
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<tx:annotation-driven/>
</beans>

总是出现这个错误:
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]

难道是因为我使用hibernate.cfg.xml进行sessionFactory初始化么?
...全文
922 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_22894447 2014-11-08
  • 打赏
  • 举报
回复
引用 12 楼 cenxcen 的回复:
[Quote=引用 11 楼 的回复:] 引用 10 楼 的回复: 引用 9 楼 的回复: 引用 8 楼 的回复: 引用 7 楼 的回复: 解决了吗? 解决了,spring3.1 + hiberante4 的时候,必须为transactionManager指定dataSource,仅仅指出sessionFactory是不够的。 你的事物是spring的声明式事物吗? 是的,程序中service层使…… [/Quote] 不清楚,不加就报错
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> </bean> 请问这里面怎么配啊 配置了不和Hibernate配置文件重复吗
水上冰石 2014-11-04
  • 打赏
  • 举报
回复
dataSource是在哪里配置的呢?
  • 打赏
  • 举报
回复
引用 7 楼 iisgirl 的回复:
解决了吗?
楼主,请问是不是在hibernate4的时候才是一定要为transactionManager注入dataSource,在写dataSource的bean时又要注意哪些?
BestTim 2012-04-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 10 楼 的回复:

引用 9 楼 的回复:
引用 8 楼 的回复:

引用 7 楼 的回复:
解决了吗?

解决了,spring3.1 + hiberante4 的时候,必须为transactionManager指定dataSource,仅仅指出sessionFactory是不够的。


你的事物是spring的声明式事物吗?


是的,程序中service层使……
[/Quote]
不清楚,不加就报错
昨日凡阳 2012-04-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 9 楼 的回复:
引用 8 楼 的回复:

引用 7 楼 的回复:
解决了吗?

解决了,spring3.1 + hiberante4 的时候,必须为transactionManager指定dataSource,仅仅指出sessionFactory是不够的。


你的事物是spring的声明式事物吗?


是的,程序中service层使用注解@Transactio……
[/Quote]

不对,没有理由呀。
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="dataSource" ref="dataSourec"/>
为什么还要加<property name="dataSource" ref="dataSourec"/>
BestTim 2012-04-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
引用 8 楼 的回复:

引用 7 楼 的回复:
解决了吗?

解决了,spring3.1 + hiberante4 的时候,必须为transactionManager指定dataSource,仅仅指出sessionFactory是不够的。


你的事物是spring的声明式事物吗?
[/Quote]

是的,程序中service层使用注解@Transactional进行事务声明,配置:

<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager" >
<property name="sessionFactory" ref="sessionFactory"></property>
<property name="dataSource" ref="dataSourec"/>
</bean>

昨日凡阳 2012-04-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

引用 7 楼 的回复:
解决了吗?

解决了,spring3.1 + hiberante4 的时候,必须为transactionManager指定dataSource,仅仅指出sessionFactory是不够的。
[/Quote]

你的事物是spring的声明式事物吗?
BestTim 2012-04-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
解决了吗?
[/Quote]
解决了,spring3.1 + hiberante4 的时候,必须为transactionManager指定dataSource,仅仅指出sessionFactory是不够的。
昨日凡阳 2012-04-04
  • 打赏
  • 举报
回复
解决了吗?
BestTim 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
数据库连接不上吧 检查下 数据库是否能够连接
[/Quote]

数据库连接没有问题的
BestTim 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
引用 1 楼 的回复:

<value>WEB-INF/hibernate.cfg.xml</value>
这个路径有问题
解决方案有两种
一。在web-inf前面加正斜杠 /WEB-INF/classes/hibernate.cfg.xml
二。classpath:hibernate.cfg.xml


lz既然使用spring,就應該把配置dataSource的任務交給spr……
[/Quote]

我使用hibernate tools,它似乎不支持spring配置文件。所以要分离出来。。
当然手工也可以,只是比较懒。。
BestTim 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
<value>WEB-INF/hibernate.cfg.xml</value>
这个路径有问题
解决方案有两种
一。在web-inf前面加正斜杠 /WEB-INF/classes/hibernate.cfg.xml
二。classpath:hibernate.cfg.xml
[/Quote]
value>WEB-INF/hibernate.cfg.xml</value>路径没有问题,去掉事务部分的配置是可以正常运行的。
小菜鸟的博客 2012-04-01
  • 打赏
  • 举报
回复
数据库连接不上吧 检查下 数据库是否能够连接
昨日凡阳 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

<value>WEB-INF/hibernate.cfg.xml</value>
这个路径有问题
解决方案有两种
一。在web-inf前面加正斜杠 /WEB-INF/classes/hibernate.cfg.xml
二。classpath:hibernate.cfg.xml
[/Quote]

lz既然使用spring,就應該把配置dataSource的任務交給spring管理,hibernate只管mapping就對了。
wangleittt 2012-04-01
  • 打赏
  • 举报
回复
<value>WEB-INF/hibernate.cfg.xml</value>
这个路径有问题
解决方案有两种
一。在web-inf前面加正斜杠 /WEB-INF/classes/hibernate.cfg.xml
二。classpath:hibernate.cfg.xml

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧