求高手,spring3.2+hibernate4.1整合后数据源问题

Intboy 2012-08-12 03:35:43
spring配置

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<!-- 配置事务传播特性 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- aop对哪些类的哪些方法实行事务管理 -->
<aop:config>
<aop:pointcut id="allManager" expression="execution(* com.spg.manager.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="allManager"/>
</aop:config>

</beans>


hibernate配置
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>

<session-factory>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost/SSH?characterEncoding=UTF-8
</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>

<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.current_session_context_class">thread</property>

<mapping resource="com/spg/bean/User.hbm.xml" />
<mapping resource="com/spg/bean/Log.hbm.xml" />

</session-factory>

</hibernate-configuration>

字数超出限制,错误堆栈信息:见一楼
...全文
1238 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
pre_ 2014-10-20
  • 打赏
  • 举报
回复
引用 13 楼 haizeihdj 的回复:
hibernate配置文件中必须指定hibernate.connection.provider_class属性,
<property name="connection.provider_class">
		org.hibernate.connection.C3P0ConnectionProvider
	</property>
,然后倒入hibernate-c3p0的jar包..我也碰到这样的问题,这样解决的.具体原理我也不懂,希望高手解答.
这个确实可以用。
黑暗浪子 2014-10-19
  • 打赏
  • 举报
回复
楼主的问题是怎么解决的?我今天也遇到这个问题了,我也是通过加载hibernate配置文件的这种方式,至今没有解决呢?
黄端吉 2014-07-11
  • 打赏
  • 举报
回复
hibernate配置文件中必须指定hibernate.connection.provider_class属性,
<property name="connection.provider_class">
		org.hibernate.connection.C3P0ConnectionProvider
	</property>
,然后倒入hibernate-c3p0的jar包..我也碰到这样的问题,这样解决的.具体原理我也不懂,希望高手解答.
yyangkuble 2012-10-04
  • 打赏
  • 举报
回复
<property name="hibernate.current_session_context_class">thread</property>
改成
hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext

hibernate4不能用thread了 事物交给 spring管理
Intboy 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

Error creating bean with name 'transactionManager' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-common.xml]: Invocation of init method failed; nested exception is org.hibern……
[/Quote]
按照这个方法去加载为什么不可以呢(加载hibernate配置文件的方法)?但是配置数据源后再用datasource标签加载就没问题。

<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<!--
<property name="dataSource" ref="dataSource" />
<property name="mappingLocations">
<list>
<value>com/spg/bean/Log.hbm.xml</value>
<value>com/spg/bean/User.hbm.xml</value>
</list>
</property>
-->
</bean>
HelloKata 2012-08-14
  • 打赏
  • 举报
回复
Error creating bean with name 'transactionManager' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-common.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]

----------------------------------
初始化transactionManager时出错了,应该是没法得到javax.sql.DataSource实例!
Intboy 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

没有配置dataSource吗?配置下,然后在事物管理器中再配置下:

XML code
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory">
……
[/Quote]
现在的问题应该就是没有配置dataSource这个属性的问题,顺便说下,dataSource是在sessionFactory里面配的。
但是我在sessionFactory中以引用hibernate配置文件的形式配就会报错,以dataSource的形式配就没问题。不知道为什么

<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<!--
<property name="dataSource" ref="dataSource" />
<property name="mappingLocations">
<list>
<value>com/spg/bean/Log.hbm.xml</value>
<value>com/spg/bean/User.hbm.xml</value>
</list>
</property>
-->
</bean>
Intboy 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

是不是logMrg写错了,应该是logMgr
[/Quote]
也不是这个问题,改了还是同样的错
OnEstepEnD 2012-08-13
  • 打赏
  • 举报
回复
有可能是楼主大意bean写错了:Cannot resolve reference to bean 'logMgr' while setting bean property 'logMrg'
找不到bean 'logMgr' 的属性 'logMrg'
是不是logMgr或logMrg中某个字母不小心站错位置?
brightyq 2012-08-13
  • 打赏
  • 举报
回复
没有配置dataSource吗?配置下,然后在事物管理器中再配置下:

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
<property name="dataSource" ref="dataSource"/>
</bean>
24K純帥 2012-08-13
  • 打赏
  • 举报
回复
是不是logMrg写错了,应该是logMgr
Intboy 2012-08-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

<property name="hibernate.connection.url">
jdbc:mysql://localhost/SSH?characterEncoding=UTF-8
</property>
--------------------------------------------------------------
这句应该写错了????????????没端口号……
[/Quote]
加了端口3306还是有问题,不是端口问题,单纯用hibernate持久化数据没问题。
ZHOU西口 2012-08-12
  • 打赏
  • 举报
回复
<property name="hibernate.connection.url">
jdbc:mysql://localhost/SSH?characterEncoding=UTF-8
</property>
--------------------------------------------------------------
这句应该写错了????????????没端口号????????????
Intboy 2012-08-12
  • 打赏
  • 举报
回复
求高手解答,路过顶贴也给分……
Intboy 2012-08-12
  • 打赏
  • 举报
回复
补充错误堆栈信息
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userMgr' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-beans.xml]: Cannot resolve reference to bean 'logMgr' while setting bean property 'logMrg'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logMgr' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-beans.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txAdvice': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-common.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:609)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:469)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.spg.manager.impl.UserMgrImpl.main(UserMgrImpl.java:67)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logMgr' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-beans.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txAdvice': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-common.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 15 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txAdvice': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-common.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.aop.support.AbstractBeanFactoryPointcutAdvisor.getAdvice(AbstractBeanFactoryPointcutAdvisor.java:85)
at org.springframework.aop.aspectj.AspectJProxyUtils.isAspectJAdvice(AspectJProxyUtils.java:66)
at org.springframework.aop.aspectj.AspectJProxyUtils.makeAdvisorChainAspectJCapableIfNecessary(AspectJProxyUtils.java:49)
at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.extendAdvisors(AspectJAwareAdvisorAutoProxyCreator.java:101)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:88)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:68)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:359)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:322)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1461)
at
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager' defined in file [D:\Workspaces\hibernate-spring\bin\applicationContext-common.xml]: Invocation of init method failed; nested exception is org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
... 41 more
Caused by: org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.unwrap(DriverManagerConnectionProviderImpl.java:85)
at org.springframework.orm.hibernate4.SessionFactoryUtils.getDataSource(SessionFactoryUtils.java:101)org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 48 more

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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