如何解決「org.hibernate.HibernateException:當'hibernate.dialect'未設定時存取 DialectResolutionInfo 不能為空」?
錯誤訊息「org.hibernate.HibernateException:存取 DialectResolutionInfo 不能為空」當 Hibernate 無法確定資料庫方言時,會出現「'hibernate.dialect' not set」的情況。這通常是由於 Hibernate 配置中缺少 hibernate.dialect 屬性造成的。解決此問題的方法如下:
1.刪除自訂Hibernate 配置:
確保您沒有在應用程式中定義任何自訂Hibernate 配置,因為Spring Boot為Hibernate 提供了自動配置。刪除定義 sessionFactory() bean 的 @Configuration 類別(範例中為 HibernateConfig),因為 Spring Boot 將為您建立所需的 bean。
2.新增資料庫屬性:
在application.properties 檔案中,包含下列屬性以指定資料庫詳細資訊和Hibernate 設定:
spring.datasource.url=jdbc:postgresql://localhost:5432/teste?charSet=LATIN1 spring.datasource.username=klebermo spring.datasource.password=123 spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect spring.jpa.show-sql=false spring.jpa.hibernate.ddl-auto=create
3.刪除commons-dbcp依賴:
Spring Boot 預設使用更有效率的 HikariCP 依賴。從 pom.xml 檔案中刪除 commons-dbcp 依賴項,以允許 Spring Boot 管理資料庫連線池。
4.更新Spring Boot 版本(可選):
如果您使用的是舊版本的Spring Boot,請升級到較新的版本以利用最新的改進。 Spring Boot 2.x 支援 SessionFactory bean 作為 EntityManagerFactory 的擴充。您可以透過轉換 EntityManagerFactory 或使用 unwrap 方法來取得 SessionFactory。
5.使用@SpringBootApplication:
在較新版本的Spring Boot 中,您可以使用單一@SpringBootApplication 註釋,而不是使用多個註釋(@Configuration 、@EnableAutoConfiguration 和@ComponentScan)。此註釋結合了所有三個註釋的功能。
以下是更新的應用程式類別的範例:
@SpringBootApplication @ComponentScan("com.spring.app") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
以上是如何修正「org.hibernate.HibernateException:未設定「hibernate.dialect」時對 DialectResolutionInfo 的存取不能為空」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!