我使用org.springframework.orm.hibernate4.LocalSessionFactoryBean类创建了sessionFactory bean,并使用org.springframework.orm.hibernate4.HibernateTransactionManager类创建了transactionManager bean .
在执行JUnits测试时,将显示以下内容 .
“引起:org.springframework.beans.ConversionNotSupportedException:无法将类型'java.lang.String'的属性值转换为属性'sessionFactory'所需的类型'org.hibernate.SessionFactory';嵌套异常是java.lang.IllegalStateException :无法将类型[java.lang.String]的值转换为属性'sessionFactory'所需的类型[org.hibernate.SessionFactory]:找不到匹配的编辑器或转换策略“ .
Hibernate Core依赖版本是4.3.9 .
请指教 .
下面是我的JUnit测试的datasource.xml . 测试在dev配置文件下运行 . 虽然确切的.xml代码可以顺利地在主应用程序的 生产环境 配置文件下运行 .
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
<context:component-scan base-package="com.caveofprogramming.spring.test">
</context:component-scan>
enter code here
<beans profile="dev">`enter code here`
<context:property-placeholder
location="com/caveofprogramming/spring/web/test/config/jdbc.properties" />
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="username" value="${jdbc.username}"></property>
</bean>
<!-- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="javax.persistence.validation.group.pre-persist">
com.caveofprogramming.spring.web.dao.PersistenceValidationGroup
</prop>
<prop key="javax.persistence.validation.group.pre-update">
com.caveofprogramming.spring.web.dao.PersistenceValidationGroup
</prop>
<prop key="javax.persistence.validation.group.pre-remove">
com.caveofprogramming.spring.web.dao.PersistenceValidationGroup
</prop>
</props>
</property>
<property name="packagesToScan">
<list>
<value>com.caveofprogramming.spring.web.dao</value>
</list>
</property>
</bean>
<!-- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="dataSource" ref="dataSource"></property>
<property name="sessionFactory" value="sessionFactory"></property>
</bean>
<tx:annotation-driven />
<bean id="exceptionTranslator"
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor">
</bean>
</beans>
</beans>
1 回答
您必须传递对bean的引用,而不是值 . 所以改变这个:
至