我使用org.springframework.orm.hibernate4.LocalSessionFactoryBean類創建了sessionFactory bean,並使用org.springframework.orm.hibernate4.HibernateTransactionManager類創建了transactionManager bean。使用Hibernate 4進行轉換異常,同時使用Spring進行JUnit測試
在執行JUnits測試時,會顯示以下內容。
「由org.springframework.beans.ConversionNotSupportedException導致:無法將類型'java.lang.String'的屬性值轉換爲屬性'sessionFactory'所需的類型'org.hibernate.SessionFactory';嵌套異常是java .lang.IllegalStateException:無法將屬性'sessionFactory'的類型[java.lang.String]的值轉換爲所需的類型[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>
謝謝你很多。用我的壞眼睛可能需要更長的時間。我對此很陌生。 –