2017-06-01 74 views
0

我试图创建一个利用hibernate和h2的spring引导应用程序。从我在网上找到的这个可以做到,但我在启动应用程序时遇到问题。 Hibernate抱怨说它无法连接到我创建的h2数据库。春季/休眠中运行H2嵌入式数据库

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

我的理论是,应用程序需要启动数据库是可用,但Hibernate是不是让不连接的应用程序启动。

我在这个理论的正确轨道上,是否有类似的问题,有人知道如何解决这个问题?

Hibernate的配置

**<?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配置

+0

你在linux上吗? – Thihara

回答

2

改变以下特性 <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>

问题是与驱动程序类;你可以保持网址原样。

+0

这工作!提供一点背景,为什么这是解决方案? – Kalkrin

+0

实际上,DriverManager类的java.sql包使用connection.driver_class属性。DriverManager类充当用户和驱动程序之间的接口。 它跟踪可用的驱动程序并处理在数据库和相应的驱动程序之间建立连接。 [DriverManager](https://docs.oracle.com/javase/8/docs/api/java/sql/DriverManager.html)载入此初始驱动程序。 – abhi3232