База данных Spring H2 EmbeddedDatabaseFactory неверный URL соединения - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь создать простой REST-Backend с Spring-Boot 2, Java 11, базой данных H2 и Gradle. Я хочу использовать встроенную (файловую) базу данных 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 в качестве URL JDBC, а не мой настроенный jdbc:h2:./customdb?

1 Ответ

1 голос
/ 14 апреля 2019

Проверьте ваши зависимости 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...