org.hibernate.HibernateException: Der Zugriff auf DialectResolutionInfo kann nicht null sein, wenn 'hibernate.dialect' nicht festgelegt ist

205

Ich versuche, eine Spring-Boot-Anwendung auszuführen, die den Ruhezustand über spring-jpa verwendet, aber ich erhalte den folgenden Fehler:

Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set
        at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:104)
        at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:71)
        at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:205)
        at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:111)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:234)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:206)
        at org.hibernate.cfg.Configuration.buildTypeRegistrations(Configuration.java:1885)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1843)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:843)
        at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:398)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:842)
        at org.hibernate.jpa.HibernatePersistenceProvider.createContainerEntityManagerFactory(HibernatePersistenceProvider.java:152)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:336)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550)
        ... 21 more

Meine pom.xml-Datei lautet wie folgt:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.1.8.RELEASE</version>
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
       </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-taglibs</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
    </dependency>
</dependencies>

Meine Konfiguration für den Ruhezustand lautet wie folgt (die Dialektkonfiguration ist die letzte Methode dieser Klasse):

@Configuration
@EnableTransactionManagement
@ComponentScan({ "com.spring.app" })
public class HibernateConfig {

   @Bean
   public LocalSessionFactoryBean sessionFactory() {
      LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();

      sessionFactory.setDataSource(restDataSource());
      sessionFactory.setPackagesToScan(new String[] { "com.spring.app.model" });
      sessionFactory.setHibernateProperties(hibernateProperties());

      return sessionFactory;
   }

   @Bean
   public DataSource restDataSource() {
      BasicDataSource dataSource = new BasicDataSource();

      dataSource.setDriverClassName("org.postgresql.Driver");
      dataSource.setUrl("jdbc:postgresql://localhost:5432/teste?charSet=LATIN1");
      dataSource.setUsername("klebermo");
      dataSource.setPassword("123");

      return dataSource;
   }

   @Bean
   @Autowired
   public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
      HibernateTransactionManager txManager = new HibernateTransactionManager();
      txManager.setSessionFactory(sessionFactory);
      return txManager;
   }

   @Bean
   public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
      return new PersistenceExceptionTranslationPostProcessor();
   }

   Properties hibernateProperties() {
      return new Properties() {
         /**
         * 
         */
        private static final long serialVersionUID = 1L;

        {
            setProperty("hibernate.hbm2ddl.auto", "create");
            setProperty("hibernate.show_sql", "false");
            setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
         }
      };
   }
}

Was mache ich hier falsch?

Kleber Mota
quelle

Antworten:

199

Entfernen Sie zuerst Ihre gesamte Konfiguration. Spring Boot startet sie für Sie.

Stellen Sie sicher, dass Sie einen application.propertiesin Ihrem Klassenpfad haben, und fügen Sie die folgenden Eigenschaften hinzu.

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

Wenn Sie wirklich Zugriff auf a benötigen SessionFactoryund dies im Grunde genommen für dieselbe Datenquelle gilt, können Sie Folgendes tun (was auch hier dokumentiert ist, obwohl für XML, nicht für JavaConfig).

@Configuration        
public class HibernateConfig {

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

Auf diese Weise haben Sie sowohl ein EntityManagerFactoryals auch ein SessionFactory.

UPDATE: Ab Hibernate 5 wird das SessionFactorytatsächlich erweitert EntityManagerFactory. Um ein zu erhalten SessionFactory, können Sie es einfach umwandeln EntityManagerFactoryoder die unwrapMethode verwenden, um eines zu erhalten.

public class SomeHibernateRepository {

  @PersistenceUnit
  private EntityManagerFactory emf;

  protected SessionFactory getSessionFactory() {
    return emf.unwrap(SessionFactory.class);
  }

}

Angenommen, Sie haben eine Klasse mit einer mainMethode, für die @EnableAutoConfigurationSie die @EnableTransactionManagementAnnotation nicht benötigen , da dies von Spring Boot für Sie aktiviert wird. Eine grundlegende Anwendungsklasse im com.spring.appPaket sollte ausreichen.

@Configuration
@EnableAutoConfiguration
@ComponentScan
public class Application {


    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

} 

So etwas sollte ausreichen, damit alle Ihre Klassen (einschließlich Entitäten und Spring Data-basierter Repositorys) erkannt werden.

UPDATE: Diese Anmerkungen können @SpringBootApplicationin neueren Versionen von Spring Boot durch eine einzige ersetzt werden .

@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
} 

Ich würde auch vorschlagen, die commons-dbcpAbhängigkeit zu entfernen, da Spring Boot dadurch die schnellere und robustere HikariCPImplementierung konfigurieren kann .

M. Deinum
quelle
1
Aber gibt es eine Möglichkeit, das Erstellen dieser Datei zu vermeiden application.propertes? Ich bevorzuge einen Weg, auf dem ich die gesamte Konfiguration in der Klasse HibernateConfig durchführe.
Kleber Mota
2
Warum? Der gesamte Zweck von Spring Boot besteht darin, dass die automatische Konfiguration für Sie durchgeführt wird. Sie möchten also lieber eine ausführliche Java-Konfiguration über 7 Zeilen in eine Eigenschaftendatei aufnehmen?!
M. Deinum
2
Es können sogar 6 Zeilen in einer Eigenschaftendatei sein. Sie müssen spring.datasource.driverClassName nicht festlegen, wenn Sie Postgres verwenden, da Boot dies aus spring.datasource.url ableitet.
Andy Wilkinson
2
@AlexWorden Nein, ist es nicht ... Anstatt zufällige Kommentare abzugeben, möchten Sie vielleicht zuerst lesen, wie Eigenschaften geladen werden, insbesondere die Unterstützung, die Spring Boot bietet. Passwörter auf der Festplatte müssen kein Problem sein, wenn Sie die Dateirechte richtig einstellen. Sie in eine Datenbank zu stellen ist nicht viel besser ...
M. Deinum
4
Anstatt 3 Anmerkungen zu verwenden, z. B. Konfiguration, EnableAutoConfiguration, ComponentScan. Wir können SpringBootApplication Annotation
Pankaj
158

Beim Starten der Anwendung (mit Spring Boot) mit heruntergefahrenem Datenbankserver trat ein ähnliches Problem auf .

Der Ruhezustand kann den richtigen Dialekt bestimmen, der automatisch verwendet werden soll. Dazu ist jedoch eine Live-Verbindung zur Datenbank erforderlich.

mhnagaoka
quelle
2
Mein Problem war ähnlich, da pg_hba.conf auf dem Server nicht für die Remoteverbindung konfiguriert war, was mir diesen Fehler verursachte.
Brian
8
Wenn die Datenbank, zu der Sie eine Verbindung herstellen möchten, nicht vorhanden ist, wird dieser Fehler ebenfalls angezeigt.
Jonas Pedersen
12
Habe das gleiche Problem, in meinem Fall war die Datenbank aktiv, aber die Anmeldeinformationen waren falsch. +1
Federico Piazza
überraschenderweise bekam ich dieses Problem, als das Schema gelöscht wurde, in dem erwartet wurde, dass hbm2ddl.auto = true Datenbank und Tabellen erstellt. es schlug jedoch fehl. aber wen ich leeres Schema erstellt hbm2ddl arbeitete beim Erstellen von Tabellen
Saurabh
Die IP des Datenbankcomputers wurde geändert, aber ein DNS wurde in den alten aufgelöst :-(
Illidan
24

Fügen Sie die spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialectDatei application.properties hinzu

alpin
quelle
Dies ist eine großartige Antwort - ermöglicht es mir, eine MockBean für meine Datenbankklasse zu verwenden und keine echten Verbindungsinformationen in meinem Eigenschaftenprofil zu haben
Taylor
Das Hinzufügen von spring.jpa.properties.hibernate.dialect zu application.properties hat mir geholfen. Vielen Dank)
Maks
22

Ich habe diesen Fehler erhalten, als meine Datenbank nicht erstellt wurde. Nach dem manuellen Erstellen der Datenbank hat es einwandfrei funktioniert.

ACV
quelle
1
Normalerweise können Sie die manuelle Erstellung vermeiden, indem Sie "spring.jpa.hibernate.ddl-auto = create" verwenden
Andrei
@Andrei - wie / wo würde ich "spring.jpa.hibernate.ddl-auto = create" angeben?
Alex Worden
2
@AlexWorden, Andrei meinte, Sie können es in application.properties einfügen, wenn es Spring Boot ist. Für die XML-basierte Spring-Konfiguration muss das Äquivalent vorhanden sein.
ACV
Tritt dieser Fehler nur auf, wenn die Datenbank nicht vorhanden ist oder wenn die Tabellen in der Datenbank nicht vorhanden sind?
Zygimantus
1
Ich hatte ein falsches Passwort angegeben und hatte den gleichen Fehler. Danke ACV, du hast mir sehr geholfen.
Santu
17

Ich hatte auch ein ähnliches Problem. Dies lag jedoch an dem ungültigen Passwort. Außerdem möchte ich sagen, dass Ihr Code mit spring alten Code zu sein scheint. Sie haben bereits erwähnt, dass Sie Spring Boot verwenden, was bedeutet, dass die meisten Dinge automatisch für Sie konfiguriert werden. Der Dialekt für den Ruhezustand wird automatisch basierend auf dem im Klassenpfad verfügbaren DB-Treiber zusammen mit gültigen Anmeldeinformationen ausgewählt, mit denen die Verbindung ordnungsgemäß getestet werden kann. Wenn es ein Problem mit der Verbindung gibt, wird erneut der gleiche Fehler angezeigt. In application.properties werden nur 3 Eigenschaften benötigt

# Replace with your connection string
spring.datasource.url=jdbc:mysql://localhost:3306/pdb1

# Replace with your credentials
spring.datasource.username=root
spring.datasource.password=
Pankaj
quelle
8

Ich hatte das gleiche Problem und mein Problem war, dass die Datenbank, zu der ich eine Verbindung herstellen wollte, nicht vorhanden war.

Ich habe die Datenbank erstellt, die URL / Verbindungszeichenfolge überprüft und erneut ausgeführt, und alles hat wie erwartet funktioniert.

Eric B.
quelle
Dank Ihres Kommentars habe ich den Verbindungsport überprüft, der falsch war
Feras
4

Dies geschieht, weil Ihr Code nicht für die Verbindung der Datenbank geeignet ist. Stellen Sie sicher, dass Sie MySQL-Treiber und Benutzername haben, Passwort korrekt.

user7169604
quelle
4

Stellen Sie sicher, dass application.propertiesalle Informationen korrekt sind: (Ich habe meinen Datenbank-Port von geändert 8889, damit 3306es funktioniert.)

 db.url: jdbc:mysql://localhost:3306/test
Vikram S.
quelle
4

Im Frühjahrsstart für jpa java config müssen Sie JpaBaseConfiguration erweitern und die abstrakten Methoden implementieren.

@Configuration
public class JpaConfig extends JpaBaseConfiguration {

    @Override
    protected AbstractJpaVendorAdapter createJpaVendorAdapter() {
        final HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        return vendorAdapter;
    }

    @Override
    protected Map<String, Object> getVendorProperties() {
        Map<String, Object> properties = new HashMap<>();
        properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
    }

}
Jaroslaw
quelle
In einigen Fällen können application.properties die Änderungen der Eigenschaften nicht sehen. Und ich habe properties.put wie oben hinzugefügt und gut funktioniert. Danke für die Antwort.
Fatih Yavuz
4

Entfernen Sie die redundante Ruhezustandskonfiguration

Wenn Sie Spring Boot verwenden, müssen Sie die JPA- und Hibernate-Konfiguration nicht explizit angeben, da Spring Boot dies für Sie tun kann.

Fügen Sie Datenbankkonfigurationseigenschaften hinzu

In der application.propertiesSpring Boot-Konfigurationsdatei müssen Sie Ihre Datenbankkonfigurationseigenschaften hinzufügen:

spring.datasource.driverClassName = "org.postgresql.Driver
spring.datasource.url = jdbc:postgresql://localhost:5432/teste?charSet=LATIN1
spring.datasource.username = klebermo
spring.datasource.password = 123

Fügen Sie bestimmte Eigenschaften für den Ruhezustand hinzu

In derselben application.propertiesKonfigurationsdatei können Sie auch benutzerdefinierte Eigenschaften für den Ruhezustand festlegen:

# Log SQL statements
spring.jpa.show-sql = false

# Hibernate ddl auto for generating the database schema
spring.jpa.hibernate.ddl-auto = create

# Hibernate database Dialect
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect

Das ist es!

Vlad Mihalcea
quelle
Das Hinzufügen von spring.jpa.properties.hibernate.dialect zu application.properties hat mir geholfen. Vielen Dank)
Maks
3

Ich hatte das gleiche Problem. Durch Hinzufügen dieser zur application.properties wurde das Problem behoben:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
Arthur Kazemi
quelle
Das Hinzufügen von spring.jpa.properties.hibernate.dialect zu application.properties hat mir geholfen. Vielen Dank)
Maks
2

In meinem Fall konnte der Benutzer keine Verbindung zur Datenbank herstellen. Wenn das Protokoll kurz vor der Ausnahme eine Warnung enthält, tritt dasselbe Problem auf:

WARN HHH000342: Could not obtain connection to query metadata : Login failed for user 'my_user'.
zbig
quelle
2

Stellen Sie sicher, dass Sie Ihre Datenbank wie OP in Ihrem POM haben. Das war mein problem

fettleibig13
quelle
Können Sie weiter ausführen? Was meinst du mit dieser Antwort?
Tunaki
Ich musste nur die MySQL-Abhängigkeit hinzufügen.
obesechicken13
2

Mein Problem war, dass die eingebettete Datenbank bereits verbunden war. Verbindung schließen

spielt keine Rolle
quelle
1
Ich kann bestätigen, dass ein Problem im Ruhezustand vorliegt, das diesen Fehler meldet, wenn keine Verbindung hergestellt werden kann. Ich könnte das Problem beim Ein- und Ausschalten des Netzwerks reproduzieren.
Borjab
2

Ich habe dieses Problem erhalten, als Eclipse den JDBC-Treiber nicht finden konnte. Musste eine Gradle-Aktualisierung von der Sonnenfinsternis machen, um diese Arbeit zu bekommen.

Kannan Ramamoorthy
quelle
2

Im Folgenden sind einige der Gründe für das hibernate.dialectnicht festgelegte Problem aufgeführt. Die meisten dieser Ausnahmen werden im Startprotokoll angezeigt, auf das schließlich das erwähnte Problem folgt.

Beispiel: In Spring Boot App mit Postgres DB

1. Überprüfen Sie, ob die Datenbank tatsächlich installiert und der Server gestartet ist.

  • org.postgresql.util.PSQLException: Verbindung zu localhost: 5432 abgelehnt. Überprüfen Sie, ob der Hostname und der Port korrekt sind und ob der Postmaster TCP / IP-Verbindungen akzeptiert.
  • java.net.ConnectException: Verbindung abgelehnt: Verbindung herstellen
  • org.hibernate.service.spi.ServiceException: Der angeforderte Dienst kann nicht erstellt werden [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

2. Überprüfen Sie, ob der Datenbankname korrekt angegeben ist.

  • org.postgresql.util.PSQLException: FATAL: Datenbank "foo" existiert nicht

    In der application.propertiesDatei,

    spring.datasource.url = jdbc:postgresql://localhost:5432/foo

    aber fooexistierte nicht. Also habe ich die Datenbank von pgAdmin für Postgres erstellt

    CREATE DATABASE foo;

3. Überprüfen Sie, ob auf den Hostnamen und den Serverport zugegriffen werden kann.

  • org.postgresql.util.PSQLException: Verbindung zu localhost: 5431 abgelehnt. Überprüfen Sie, ob der Hostname und der Port korrekt sind und ob der Postmaster TCP / IP-Verbindungen akzeptiert.
  • java.net.ConnectException: Verbindung abgelehnt: Verbindung herstellen

4. Überprüfen Sie, ob die Datenbankanmeldeinformationen korrekt sind.

  • wie @Pankaj erwähnt
  • org.postgresql.util.PSQLException: FATAL: Kennwortauthentifizierung für Benutzer "postgres" fehlgeschlagen

    spring.datasource.username= {DB USERNAME HERE}

    spring.datasource.password= {DB PASSWORD HERE}

Abitcode
quelle
1

Wenn Sie diese Zeile verwenden:

sessionFactory.getHibernateProperties().put("hibernate.dialect", env.getProperty("hibernate.dialect"));

Stellen Sie sicher, dass dies env.getProperty("hibernate.dialect")nicht null ist.

Zygimantus
quelle
1

Gleich, aber in einem JBoss WildFly AS .

Gelöst mit Eigenschaften in meinem META-INF/persistence.xml

<properties>
            <property name="hibernate.transaction.jta.platform"
                value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
            <property name="spring.jpa.database-platform" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="spring.jpa.show-sql" value="false" />
</properties>
Alejandro Teixeira Muñoz
quelle
1

Bei Benutzern von AWS MySQL RDS kann es vorkommen, dass Sie keine Verbindung zur Datenbank herstellen können. Wechseln Sie zur Einstellung für AWS-Sicherheitsgruppen für MySQL RDS und bearbeiten Sie die eingehende IP-Regel, indem Sie MyIP aktualisieren.

Ich war mit diesem Problem konfrontiert und habe das Problem für mich behoben.

Ajitesh
quelle
Ich habe den gesamten Datenverkehr zur Sicherheitsgruppe des RDS Aurora MySQL zugelassen. Dies hat den Trick für mich getan. Wenn Sie spezifischer sein möchten oder für prod env, fügen Sie nur die erlaubten ips hinzu
AleksandarT
1

Ich hatte auch dieses Problem. In meinem Fall lag es daran, dass dem MySQL-Benutzer keine Zuschüsse zugewiesen wurden. Durch das Zuweisen von Zuschüssen zu MySQL-Benutzern, die meine App verwendet, wurde das Problem behoben:

grant select, insert, delete, update on my_db.* to 'my_user'@'%';
Yamashiro Rion
quelle
1

Ich hatte das gleiche Problem und nach dem Debuggen stellte sich heraus, dass Spring application.properties eine falsche IP-Adresse für den DB-Server hatte

spring.datasource.url=jdbc:oracle:thin:@WRONG:1521/DEV
JavaSheriff
quelle
1

Ich habe diese Fehlermeldung in den folgenden drei Fällen reproduziert:

  • Es gibt keinen Datenbankbenutzer mit einem Benutzernamen, der in der Datei application.properties oder persistence.properties oder, wie in Ihrem Fall, in der Datei HibernateConfig geschrieben ist
  • Die bereitgestellte Datenbank hat diesen Benutzer, aber der Benutzer wird durch ein anderes Kennwort als das in einer der oben genannten Dateien identifiziert
  • Die Datenbank hat diesen Benutzer und die Kennwörter stimmen überein, aber dieser Benutzer verfügt nicht über alle Berechtigungen, die zum Ausführen aller Datenbankaufgaben erforderlich sind, die Ihre Spring-Boot-App ausführt

Die naheliegende Lösung besteht darin, einen neuen Datenbankbenutzer mit demselben Benutzernamen und Kennwort wie in der Spring-Boot-App zu erstellen oder den Benutzernamen und das Kennwort in Ihren Spring-Boot-App-Dateien so zu ändern, dass sie mit einem vorhandenen Datenbankbenutzer übereinstimmen und diesem Datenbankbenutzer ausreichende Berechtigungen gewähren. Im Falle einer MySQL-Datenbank kann dies wie folgt gezeigt werden:

mysql -u root -p 
>CREATE USER 'theuser'@'localhost' IDENTIFIED BY 'thepassword';
>GRANT ALL ON *.* to theuser@localhost IDENTIFIED BY 'thepassword';
>FLUSH PRIVILEGES;

Natürlich gibt es ähnliche Befehle in Postgresql, aber ich habe nicht getestet, ob diese Fehlermeldung im Fall von Postgresql in diesen drei Fällen reproduziert werden kann.

Veli-Matti Sorvala
quelle
0

Ich hatte das gleiche Problem und es wurde dadurch verursacht, dass keine Verbindung zur Datenbankinstanz hergestellt werden konnte. Suchen Sie im Protokoll über diesem Fehler nach dem Ruhezustand HHH000342. Er sollte Ihnen eine Vorstellung davon geben, wo die Datenbankverbindung fehlschlägt (falscher Benutzername / Pass, URL usw.).

Farouk
quelle
0

Dies ist mir passiert, weil ich conf.configure();vor Beginn der Sitzung nicht Folgendes hinzugefügt hatte:

Configuration conf = new Configuration();
conf.configure();
Diana
quelle
0

Stellen Sie sicher, dass Sie in application.properties gültige Details eingegeben haben und ob Ihr Datenbankserver verfügbar ist. Wenn Sie beispielsweise eine Verbindung mit MySQL herstellen, überprüfen Sie, ob XAMPP ordnungsgemäß ausgeführt wird.

Lahiru Gamage
quelle
0

Ich hatte das gleiche Problem: Die Datenbank, die ich verbinden wollte, existierte nicht. Ich habe verwendet jpa.database=default(was bedeutet, dass versucht wird, eine Verbindung zur Datenbank herzustellen und dann automatisch den Dialekt auszuwählen). Nachdem ich die Datenbank gestartet hatte, funktionierte sie ohne Änderungen einwandfrei.

Avishekh Tewari
quelle
0

Ich hatte dieses Problem, weil die Version von MySQL 8.0.11 auf 5.7 zurückgesetzt wurde und für mich gelöst wurde

Gautam Yadav
quelle
0

Ich hatte den gleichen Fehler,

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

In meinem Fall enthielt die WAR application.properties, die auf den Entwicklungsserver
verweisen, während die externe application.properties auf den richtigen DB-Server verweist.

Stellen Sie sicher, dass Sie keine anderen application.properties im Klassenpfad / in den Jars haben ...

JavaSheriff
quelle