尝试使用Spring Boot在2个数据库MySQL和Oracle SQL上构建多租户应用程序。该应用程序的目的是将数据发布到Oracle DB,然后在完成之后将相同的数据发布到MySQL DB。
应用程序yml
读取以下内容:
multitenancy:
tenants:
- name: tenant_1
default: true
url: jdbc:mysql://localhost:3306/automation_test
username: root
password: ****
driver-class-name: com.mysql.jdbc.Driver
- name: tenant_2
default: false
url: jdbc:oracle:thin:@//localhost:1521:xe
username: SYS
password: ****
driver-class-name: oracle.jdbc.driver.OracleDriver
因此,我使用CurrentTenantIdentifierResolver
和AbstractDataSourceBasedMultiTenantConnectionProviderImpl
来实现这一点。问题在于,它对于MySQL数据库运行正常,但不适用于Oracle。将数据发布到MySQL之后,它不会将数据发布到Oracle引发此异常:
由以下原因引起:org.hibernate.HibernateException:如果未设置“ hibernate.dialect”,则对DialectResolutionInfo的访问不能为null 在org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:100)〜[hibernate-core-5.2.17.Final.jar:5.2.17.Final] 在org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:54)〜[hibernate-core-5.2.17.Final.jar:5.2.17.Final] 在org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:137)〜[hibernate-core-5.2.17.Final.jar:5.2.17.Final]