我正在使用 AbstractRoutingDatasource 在运行时在数据库之间进行路由。在informix 数据库的实际情况下,一切正常。
对于测试,我创建了一个 spring 配置文件以在内存 H2 数据库中使用。在运行带有测试配置文件的 spring 应用程序后,我使用 h2 控制台检查了本地数据库。没有创建架构。
我尝试在资源和休眠中使用 schema.sql:
generate-ddl: true
hibernate:
ddl-auto: create-drop
Run Code Online (Sandbox Code Playgroud)
休眠抛出
java.lang.IllegalStateException: Cannot determine target DataSource for lookup key [null]
Run Code Online (Sandbox Code Playgroud)
据我了解,hibernate 试图仅生成“路由”数据源。由于没有设置 DatabaseContextHolder (null),因此失败。
所以两种方式都失败了。
有没有办法用(相同的)模式初始化所有数据库?
我在下面列出了我的配置。
引导程序.yml:
spring:
profiles: acceptanceTest
config:
name: standalone
cloud:
config:
enabled: false
discovery:
enabled: false
jpa:
database-platform: org.hibernate.dialect.H2Dialect
generate-ddl: true
hibernate:
ddl-auto: create-drop
properties:
hibernate:
show_sql: false
use_sql_comments: false
format_sql: false
h2:
console:
enabled: true
path: /h2
datasource:
mc:
driver-class-name: 'org.h2.Driver'
url: 'jdbc:h2:mem:test-mc-db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE'
username: …Run Code Online (Sandbox Code Playgroud)