首頁 > Java > java教程 > 為什麼我的 Spring Boot Hibernate 應用程式會拋出'org.hibernate.HibernateException:當未設定'hibernate.dialect'時對 DialectResolutionInfo 的存取不能為 null”?

為什麼我的 Spring Boot Hibernate 應用程式會拋出'org.hibernate.HibernateException:當未設定'hibernate.dialect'時對 DialectResolutionInfo 的存取不能為 null”?

Susan Sarandon
發布: 2024-11-28 20:39:17
原創
525 人瀏覽過

Why Does My Spring Boot Hibernate Application Throw

org.hibernate.HibernateException:當未設定「hibernate.dialect」時,對 DialectResolutionInfo 的存取不能為空

嘗試執行使用 Hibernate 的 Spring-Boot應用程式時透過Spring-JPA,你可能會遇到以下情況error:

org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
登入後複製

此錯誤表明 Hibernate 方言尚未正確配置。該方言負責翻譯特定於資料庫的 SQL 命令。

解決方案

要解決此錯誤,請依照下列步驟操作:

  1. 設定Hibernate 屬性: 在application.properties 或.cfg.xml 檔案中,將hibernate.dialect 屬性設定為適當的您的資料庫的方言。例如,如果您使用PostgreSQL,請將其設定為org.hibernate.dialect.PostgreSQLDialect.
  2. 使用Spring Boot 自動設定: 預設情況下,Spring Boot 將根據application.properties 檔案中的設定。確保您的專案中有 spring-boot-starter-data-jpa 依賴項,並且您使用的是 Spring Boot 1.4 或更高版本。

如果您需要直接存取 SessionFactory,您可以使用以下程式碼片段:

@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
    HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
    factory.setEntityManagerFactory(emf);
    return factory;
}
登入後複製

或者,您可以透過將 EntityManagerFactory 強制轉換為來取得 SessionFactory從 Hibernate 5 開始。

其他提示

  • 刪除 commons-dbcp 依賴項,因為 Spring Boot 使用更有效率的 HikariCP 實作。
  • 使用 @SpringBootApplication最近Spring Boot中使用註解取代@Configuration、@EnableAutoConfiguration和@ComponentScan版本。

以上是為什麼我的 Spring Boot Hibernate 應用程式會拋出'org.hibernate.HibernateException:當未設定'hibernate.dialect'時對 DialectResolutionInfo 的存取不能為 null”?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板