2017-06-01 3 views
0

Ich versuche, eine Spring-Boot-Anwendung mit Hibernate und h2 zu erstellen. Von dem, was ich online gefunden habe, kann dies getan werden, aber ich habe ein Problem beim Starten der Anwendung. Hibernate beschwert sich, dass es keine Verbindung zu der von mir erstellten h2-Datenbank herstellen kann.Running H2 eingebettete Datenbank im Frühjahr/Winterschlaf

Caused by: org.hibernate.HibernateException: Unable to make JDBC Connection [jdbc:h2:~/todo] 

Meine Theorie ist, dass die Anwendung starten muss für die Datenbank verfügbar sein, aber Hibernate ist die Anwendung nicht starten zu lassen, ohne die Verbindung.

Bin ich mit dieser Theorie auf dem richtigen Weg, gibt es ähnliche Probleme, dass jemand weiß, wie man das umgehen kann?

Hibernate Config

**<?xml version="1.0" encoding="UTF-8"?> 
<hibernate-configuration> 
    <session-factory> 
     <!--Database connection settings --> 
     <property name="connection.driver_class">com.mysql.cj.jdbc.Driver</property> 
     <property name="connection.url">jdbc:h2:~/todo</property> 
     <property name="connection.username">username</property> 
     <property name="connection.password" /> 

     <!--Set the database dialect --> 
     <property name="dialect">org.hibernate.dialect.H2Dialect</property> 

     <!--Echo all executed SQL to stdout--> 
     <property name="show_sql">true</property> 

     <!--Drop and re-create the database schema on startup--> 
     <property name="hbm2ddl.auto">create</property> 

     <!--Name the annotated Entity classes --> 
     <mapping class="com.todo.beans.User" /> 

    </session-factory> 
</hibernate-configuration>** 

h2 Config

+0

Sind Sie auf Linux? – Thihara

Antwort

2

Änderung folgende Eigenschaften in der Ruhe Config <property name="connection.driver_class">org.h2.Driver</property> <property name="connection.url">jdbc:h2:mem:todo;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE </property>

Problem Treiberklasse ist; Sie können die URL so beibehalten, wie sie ist.

+0

Das hat funktioniert! etwas darüber nachzudenken, warum das die Lösung war? – Kalkrin

+0

Tatsächlich verwendet die DriverManager-Klasse des java.sql-Pakets die connection.driver_class-Eigenschaft. Die DriverManager-Klasse fungiert als Schnittstelle zwischen Benutzer und Treibern. Es verfolgt die verfügbaren Treiber und verarbeitet eine Verbindung zwischen einer Datenbank und dem entsprechenden Treiber. [DriverManager] (https://docs.oracle.com/javase/8/docs/api/java/sql/DriverManager.html) lädt diese ersten Treiber. – abhi3232

Verwandte Themen