开发者社区 问答 正文

Spring引入两个数据源配置Hibernate:配置报错 

一个项目需要连两个数据库 如下配置报错

<!-- ② 定义一个数据源 --> <bean id="dataSource1" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="jdbc:mysql://192.168.1.200/db1" /> <property name="username" value="root" /> <property name="password" value="1234" /> <property name="initialSize" value="1" /> <property name="maxActive" value="20" /> </bean> <!--  定义一个db_bbs数据源 --> <bean id="dataSource2" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="jdbc:mysql://192.168.1.200/db2" /> <property name="username" value="root" /> <property name="password" value="1234" /> <property name="initialSize" value="1" /> <property name="maxActive" value="20" /> </bean>

<!-- 定义Hibernate的Session工厂 -->
<bean id="sessionFactory"
	class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
	<property name="dataSource1" ref="dataSource1" />
	<property name="dataSource2" ref="dataSource2" />
	<property name="packagesToScan">
		<!-- ③-1 扫描基于JPA 注解PO类目录 -->
		<list>
			<value>com.test.model.entity</value>
		</list>
	</property></pre> 
</bean>


 <!-- ④ 定义HibernateTemplate -->
 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"
 p:sessionFactory-ref="sessionFactory" />
</beans>

展开
收起
kun坤 2020-06-01 00:07:02 425 分享 版权
1 条回答
写回答
取消 提交回答
  • 看异常是不是sessionFactory的property dateSource2 没写set/get方法或没写对?

    ######回复 @非技术专家群体 : 歪打正着。。。######回复 @ljiang : 解决了,你没看错,sessionFactory property name后面应该是dataSource######回复 @非技术专家群体 : sorry,没细看,看错######在哪里写dataSource2的set,get 没找见######什么报错信息也要贴出来:)

    ######

    引用来自“红薯”的答案

    什么报错信息也要贴出来:)
    严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener Error creating bean with name 'testDaoImpl': Injection of autowired dependencies failed;  nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.orm.hibernate3.HibernateTemplate com.test.dao.BaseDaoImpl.hibernateTemplate Error creating bean with name 'hibernateTemplate' defined in class path resource [test-dao.xml]:  Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory';  Error creating bean with name 'sessionFactory' defined in class path resource [test-dao.xml]:  Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'dateSource2' of bean class [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean]:  Bean property 'dateSource2' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? ###### @南湖船老大 帮忙看看 ######hibernate还真心好久没用了。。。这...貌似一个sessionFactory就只能配置一个dataSource吧, 在dao里注入相应的 sessionFactory才行 吧,你这样 sessionFactory根本就没法在容器里实例化。看下这个 p://zhoujingxian.iteye.com/blog/883642  http://bbs.csdn.net/topics/330179929 ######我去研究研究,多谢######我靠,还能这样写了, 默认没有两个datasource的支持吧?######没写过,摸索中。。。
    2020-06-01 00:07:09
    赞同 展开评论