第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Boot - 多個數(shù)據(jù)源 - hbm2ddl 問題

Spring Boot - 多個數(shù)據(jù)源 - hbm2ddl 問題

侃侃無極 2023-07-28 15:24:42
我在 Spring Boot(版本 2.1.3.Final)應(yīng)用程序中定義了多個數(shù)據(jù)源,對于其中之一,我將 hbm2ddl 設(shè)置為更新。但是,如果我第二次運行該應(yīng)用程序,它總是嘗試執(zhí)行 CREATE TABLE 語句(而不是更改,或者在實體沒有更改的情況下不執(zhí)行任何語句)數(shù)據(jù)源定義如下所示:    // @formatter:off@EnableJpaRepositories(entityManagerFactoryRef = "triggerEMF", transactionManagerRef = "triggerTM", basePackages = {        "com.customer.trigger.repository" }, excludeFilters = @Filter(CDHRepository.class))// @formatter:on@Configuration@EnableTransactionManagementpublic class TriggerDSConfig {    private static final Logger LOGGER = LoggerFactory.getLogger(TriggerDSConfig.class);    @Autowired    private Environment env;    @Primary    @Bean(name = "triggerDS")    @ConfigurationProperties("trigger.datasource")    public DataSource dataSource() {        return DataSourceBuilder.create().build();    }    @Primary    @Bean(name = "triggerTM")    public PlatformTransactionManager psqlTransactionManager(@Qualifier("triggerEMF") EntityManagerFactory customerEntityManagerFactory) {        return new JpaTransactionManager(customerEntityManagerFactory);    }}該數(shù)據(jù)源的 YAML 定義如下所示:    trigger:  datasource:    jdbcUrl: jdbc:h2:~/triggerdb2;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL    username: sa    password: sa  hbm2ddl: update  dialect: org.hibernate.dialect.H2Dialect我可以確認DDL腳本沒有被執(zhí)行。hbm2ddl 失敗了。我對它進行了相當深入的調(diào)試,并且已經(jīng)達到了這個類: https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/tool /schema/internal/GroupedSchemaMigratorImpl.java這是有問題的代碼: https://github.com/hibernate/hibernate-orm/blob/master/hibernate-core/src/main/java/org/hibernate/tool/schema/internal/GroupedSchemaMigratorImpl.java #L69-L71
查看完整描述

3 回答

?
紅顏莎娜

TA貢獻1842條經(jīng)驗 獲得超13個贊

我在本地運行了你的項目。當我運行兩次時,你是對的,我得到了表已經(jīng)存在的錯誤。解決方案是


Map<String, String> props = new HashMap<String, String>();

props.put("hibernate.hbm2ddl.auto", "update");

props.put("hibernate.dialect", env.getProperty("trigger.dialect"));

props.put("hibernate.default_schema", env.getProperty("trigger.schema"));

您的 yml 中可能缺少一些屬性。還可以對這些屬性使用@Value。


查看完整回答
反對 回復 2023-07-28
?
眼眸繁星

TA貢獻1873條經(jīng)驗 獲得超9個贊

刪除以下 yaml 配置后:

       # temp:
        #  use_jdbc_metadata_defaults: "false"

該問題不再出現(xiàn)。當然,現(xiàn)在我們收到了奇怪的 CLOB 相關(guān)錯誤,但它們似乎沒有產(chǎn)生真正的影響,所以這是一個單獨的問題。


查看完整回答
反對 回復 2023-07-28
?
慕少森

TA貢獻2019條經(jīng)驗 獲得超9個贊

我讀了你的問題。問題不依賴于數(shù)據(jù)庫,我認為你的問題是你沒有為你的項目使用數(shù)據(jù)庫版本控制。版本控制為您處理所有這些事情(它知道何時創(chuàng)建或更改等等)。

這些是很好的數(shù)據(jù)庫版本控制,您可以使用?liquibase?Flyway

我的意見是使用 liquibase 因為它更容易與非常好的文檔


查看完整回答
反對 回復 2023-07-28
  • 3 回答
  • 0 關(guān)注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號