当前位置: 首页 > 知识库问答 >
问题:

Spring Boot使用application.properties或application.yaml文件连接到两个不同的数据源

马安邦
2023-03-14

我的应用程序使用SpringJPA,它应该连接到2个不同的数据源。一个连接DB2,另一个连接Oracle。

我已经设置了我的应用程序属性,如下所示:

# DB2 DATA SOURCE
# ==============================
spring.datasource.url=jdbc:db2://server:port/database:currentSchema=schema-name;
spring.datasource.username=user1
spring.datasource.password=password1
spring.datasource.driver-class-name=com.ibm.db2.jcc.DB2Driver

# ORACLE DATA SOURCE
# ==============================
oracle.datasource.url=jdbc:oracle:thin:@server:port/database
oracle.datasource.username=user2
oracle.datasource.password=password2

# ==============================
# = JPA / HIBERNATE
# ==============================
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

# **How to specify the dialects hibernate needs to use in this scenario?**
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DB2390Dialect
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

如上所述,我的DB2工作正常,但只要我添加第二个数据源(用于Oracle)

java.lang.非法状态异常: 无法加载应用程序上下文 由以下原因引起: 组织.Spring框架.豆.工厂.Bean创建例外: 创建名称为“实体管理器工厂”的 Bean 时出错在类路径中定义...原因:组织.Hibernate.Hibernate异常:访问方言分辨率在未设置“Hibernate”时不能为空。

共有1个答案

罗韬
2023-03-14

应用程序中设置属性。yml应用程序。属性不会自动创建数据库连接。使用多个数据库时,必须手动配置它们。

在您的例子中,Spring由于spring.datasource.*属性而配置db2,并忽略Oracle DB,因为它将它们视为自定义属性。要解决这个问题,您必须创建单独的配置类来定义

  1. 数据源
  2. 事务管理器
  3. 实体经理工厂

Spring Data团队为此创建了一个示例。

  1. 客户数据库
  2. 订单DB
 类似资料:
  • df1有每月时间索引,df2有季度时间索引。df1和df2有不同的行数和列数,我想:(1)并排连接它们并保持它们的索引。(2)输出到excel文件。 我尝试过pd.concat,但是这种方法连接基于我不想要的数据帧索引之一的数据帧 excel中的预期结果:

  • 我试图找出在应用程序中设置连接字符串的最干净/最简单的方法。来自ci/管道的my spring boot应用程序中的属性文件。我们正在使用gitlab。我们正在部署两个服务实例,等等。我也几乎没有/没有yaml经验。 所以当前application.properties有一个值/属性:spring.data.mongodb.uri=mongoDB://......... 我们的。gitlab-ci

  • 我有一个数据库文件:。 我的目标是连接到这个数据库并获取信息。 我已经安装了WAMP(Windows,Apache Web服务器,MySQL服务器和PHP),并启用了Firebird和interbase的扩展。 当我尝试连接到数据库,我得到以下错误消息: 这是我的密码:

  • 问题内容: 我想拥有一个配置文件,然后在创建会话时将hibernate-configuration-> session-factory-> connection.connection_string属性更改为我希望通过编程的方式?可能吗? 更新: 我相信我可以这样做 我想知道的是,如果这样还行,那么这是处理每个会话连接到不同数据库的不好方法吗?如果是这样,为什么等等。我还想知道是否/如何使用.net

  • 我在两个不同的数据库上有两个表: db1.1表1 db2.table2 当我使用以下SQL语法“内部联接”这些表时: 我得到了这样的结果: 如何获得这样的结果(DB2上没有状态的消息仍然会出现,但是SUM结果可以是零或空):

  • 问题内容: 我正在使用两个MySQL数据库。我想将DB1中的表与SQLAlchemy中DB2中的表连接起来。 我在sqlalchemy中创建数据访问层时正在使用automap_base,如下所示… 我的表类就像 我正在这样加入 我收到这样的错误: 我们在数据库db1中创建了表t1,在数据库db2中创建了表t2。 是否可以在sqlalchemy ORM中的两个数据库表之间进行联接?如何实现呢? 问题