Spring H2数据库EmbeddedDatabaseFactory错误的连接URL

时间:2019-04-14 15:40:40

标签: java spring-boot

我正在尝试使用Spring-Boot 2,Java 11,H2数据库和Gradle构建一个简单的REST-Backend。我想使用嵌入式(文件)H2数据库,所以我的(相关)application.yml(我知道它可以正确读取,因为其他值也可以工作)看起来像这样:

spring:
    datasource:
        url: "jdbc:h2:./customdb"
        username: sa
        driver-class-name: org.h2.Driver
    jpa:
        database-platform: org.hibernate.dialect.H2Dialect
        show-sql: false
        hibernate:
            ddl-auto: update

我的build.gradle

plugins {
    id 'org.springframework.boot' version '2.1.3.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'net.impfox'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    runtimeOnly 'org.springframework.boot:spring-boot-devtools'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    compile 'org.springframework.boot:spring-boot-starter-data-rest:2.1.3.RELEASE'
    compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
    compile 'javax.persistence:javax.persistence-api:2.2'
    compile 'org.hibernate:hibernate-core'
    compile 'org.springframework.data:spring-data-jpa'
}

但是,当我启动该应用程序时,没有创建文件,并且日志显示:

...EmbeddedDatabaseFactory: Starting embedded database: url='jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'

我不太清楚为什么会说Starting embedded database,因为正如您在url中看到的那样,它实际上启动了一个名为testdb的内存数据库。 那么,为什么要使用jdbc:h2:mem:testdb作为JDBC URL而不使用我配置的jdbc:h2:./customdb

1 个答案:

答案 0 :(得分:0)

检查gradle依赖项!

代替
compile 'org.springframework.data:spring-data-jpa'
使用spring-boot-starter-data-jpa,所以类似
compile 'org.springframework.boot:spring-boot-starter-data-jpa:2.1.4.RELEASE'
另外,请确保gradle实际上正在应用此更改。

问题在于spring-data-jpa没有包括所有需要的功能。 spring-boot-starter-data-jpa取决于spring-data-jpa,但还取决于其他一些工件。

enter image description here