spring-bootgradlegroovyspring-data-jpa

Add dependencies but unable to connect H2-database on my Spring Boot Gradle-Groovy project


I am trying to run the H2 database on my Spring Boot Gradle Groovy project and have added all the dependencies, but the database is not running. When I enter the database URL, it shows a Whitelabel Error Page.

here is my build.gradle

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.3.2'
    id 'io.spring.dependency-management' version '1.1.6'
}

group = 'com.packt'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(22)
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'com.h2database:h2'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
    useJUnitPlatform()
}

application.properties

spring.application.name=cardatabase
server.port=8081
spring.datasource.url=jdbc:h2:mem:accounttestdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

Here is the result showing


Solution

  • You need to use spring-starter-jpa to enable auto configuration of h2 by Spring. Here is how your pom.xml dependencies should look like:

    dependencies {
      implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
      implementation 'org.springframework.boot:spring-boot-starter-web'
      developmentOnly 'org.springframework.boot:spring-boot-devtools'
      runtimeOnly 'com.h2database:h2'
      testImplementation 'org.springframework.boot:spring-boot-starter-test'
      testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
    }