Spring Boot Hibernate中关于多租户的SQL DialectError

时间:2018-07-19 19:08:48

标签: java mysql spring hibernate spring-boot

尝试使用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

因此,我使用CurrentTenantIdentifierResolverAbstractDataSourceBasedMultiTenantConnectionProviderImpl来实现这一点。问题在于,它对于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]

0 个答案:

没有答案