首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpringBoot2多数据源配置

SpringBoot2多数据源配置
EN

Stack Overflow用户
提问于 2019-04-19 20:36:09
回答 1查看 323关注 0票数 0

我正在尝试为spring Boot2应用程序配置多个数据源,从只读的SQLite数据库文件中读取数据,并将结果写入到不同的SQLite数据库中。

我找不到要在多个数据源上设置的正确属性键。我希望代码为读/写数据源生成db,但我找不到正确的属性键来告诉hibernate为我做这件事:

代码语言:javascript
复制
lsst.ajsdata.hibernate.hbm2ddl.auto=create

不起作用。

有谁可以帮助我应该如何配置这些数据源。

application.properties ...

代码语言:javascript
复制
# DB PROPERTIES #
lsst.kracken.jdbcUrl = jdbc:sqlite:file:./data/kraken_2026.db?mode=ro
lsst.kracken.hibernate.dialect=org.hibernate.dialect.SQLiteDialect
lsst.kracken.driver-class-name = org.sqlite.JDBC
lsst.kracken.maximum-pool-size=10
lsst.kracken.hibernate.ddl-auto=none
lsst.kracken.show-sql=false
lsst.kracken.hibernate.format_sql=false
lsst.kracken.generate-ddl=true

lsst.ajsdata.jdbcUrl = jdbc:sqlite:file:./data/ajs_kraken_2026.db?mode=rw
lsst.ajsdata.driver-class-name = org.sqlite.JDBC
lsst.ajsdata.maximum-pool-size=30
lsst.ajsdata.default-auto-commit=true

lsst.ajsdata.hibernate.open-in-view=false
lsst.ajsdata.hibernate.hbm2ddl.auto=create
lsst.ajsdata.hibernate.ddl-auto=create
lsst.ajsdata.hibernate.generate-ddl=true
lsst.ajsdata.hibernate.use-new-id-generator-mappings=true
lsst.ajsdata.hibernate.jpa.show-sql=true
lsst.ajsdata.hibernate.dialect=org.hibernate.dialect.SQLiteDialect
lsst.ajsdata.hibernate.format_sql=true
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLiteDialect
#spring.jpa.generate-ddl=false
##spring.jpa.hibernate.ddl-auto=none
#spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
spring.jpa.hibernate.naming.implicit-strategy=org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

持久化上下文类如下所示:

代码语言:javascript
复制
public class KrackenPersistenceContext {

    @Bean
    @Primary
    @ConfigurationProperties(prefix="lsst.kracken")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }
}

和:

代码语言:javascript
复制
public class AjsDataPersistenceContext {

  @Bean
  @ConfigurationProperties(prefix = "lsst.ajsdata")
  @Qualifier("ajsDatasorce")
  public DataSource ajsDatasorce() {
    DataSource ajsDatasource = DataSourceBuilder.create().build();
    return ajsDatasource;
  }
}
EN

回答 1

Stack Overflow用户

发布于 2019-04-19 21:06:42

看看@andy wilkinson写的这个answer

spring.jpa.hibernate.ddl-auto=create已经停止工作,这不是因为您有两个DataSources,而是因为您的应用程序正在创建自己的LocalContainerEntityManagerFactoryBeans。这将禁用LocalContainerEntityManagerFactoryBean的自动配置,因此您现在必须自己配置它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55761969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档