Heim >Java >javaLernprogramm >Warum löst meine Spring Boot-Hibernate-Anwendung „org.hibernate.HibernateException: Access to DialectResolutionInfo can be not be null when \'hibernate.dialect\' not set' aus?

Warum löst meine Spring Boot-Hibernate-Anwendung „org.hibernate.HibernateException: Access to DialectResolutionInfo can be not be null when \'hibernate.dialect\' not set' aus?

Susan Sarandon
Susan SarandonOriginal
2024-11-28 20:39:17540Durchsuche

Why Does My Spring Boot Hibernate Application Throw

org.hibernate.HibernateException: Der Zugriff auf DialectResolutionInfo darf nicht null sein, wenn „hibernate.dialect“ nicht festgelegt ist

Beim Versuch, eine Spring-Boot-Anwendung auszuführen, die Hibernate verwendet Über Spring-JPA kann der folgende Fehler auftreten:

org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set

Dieser Fehler weist darauf hin, dass der Ruhezustand aktiviert ist Der Dialekt wurde nicht richtig konfiguriert. Der Dialekt ist für die Übersetzung datenbankspezifischer SQL-Befehle verantwortlich.

Lösung

Um diesen Fehler zu beheben, befolgen Sie diese Schritte:

  1. Konfigurieren Sie die Eigenschaften des Ruhezustands: Legen Sie in Ihrer application.properties- oder hibernate.cfg.xml-Datei die Eigenschaft hibernate.dialect auf den entsprechenden Dialekt fest Ihre Datenbank. Wenn Sie beispielsweise PostgreSQL verwenden, legen Sie es auf org.hibernate.dialect.PostgreSQLDialect fest.
  2. Automatische Konfiguration von Spring Boot verwenden: Standardmäßig konfiguriert Spring Boot den Ruhezustand automatisch basierend auf die Einstellungen in Ihrer application.properties-Datei. Stellen Sie sicher, dass Ihr Projekt über die Abhängigkeit spring-boot-starter-data-jpa verfügt und dass Sie Spring Boot-Versionen 1.4 oder höher verwenden.

Wenn Sie direkt auf die SessionFactory zugreifen müssen, können Sie dies tun Verwenden Sie den folgenden Codeausschnitt:

@Bean
public HibernateJpaSessionFactoryBean sessionFactory(EntityManagerFactory emf) {
    HibernateJpaSessionFactoryBean factory = new HibernateJpaSessionFactoryBean();
    factory.setEntityManagerFactory(emf);
    return factory;
}

Alternativ können Sie eine SessionFactory erhalten, indem Sie die EntityManagerFactory in sie umwandeln, als von Hibernate 5.

Zusätzliche Tipps

  • Entfernen Sie die commons-dbcp-Abhängigkeit, da Spring Boot die effizientere HikariCP-Implementierung verwendet.
  • Verwenden Sie stattdessen die Annotation @SpringBootApplication @Configuration, @EnableAutoConfiguration und @ComponentScan im aktuellen Spring Boot Versionen.

Das obige ist der detaillierte Inhalt vonWarum löst meine Spring Boot-Hibernate-Anwendung „org.hibernate.HibernateException: Access to DialectResolutionInfo can be not be null when \'hibernate.dialect\' not set' aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn