开发者社区> 问答> 正文

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

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

<!-- ② 定义一个数据源 -->
	<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>
</bean>


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

展开
收起
montos 2020-06-03 10:18:43 516 0
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-03 10:18:53
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载