There must be some dependency issue, but I could not figured out where and how to solve it.
I'd like to implement State Aggreages (Axon) in my Spring Application (with Kotlin) and save them on a h2 embedded database for presentation purposes.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unknown access type record
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1773) ~[spring-beans-6.1.3.jar:6.1.3]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:599) ~[spring-beans-6.1.3.jar:6.1.3]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:521) ~[spring-beans-6.1.3.jar:6.1.3]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325) ~[spring-beans-6.1.3.jar:6.1.3]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.1.3.jar:6.1.3]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:323) ~[spring-beans-6.1.3.jar:6.1.3]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) ~[spring-beans-6.1.3.jar:6.1.3]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1231) ~[spring-context-6.1.3.jar:6.1.3]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:949) ~[spring-context-6.1.3.jar:6.1.3]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:624) ~[spring-context-6.1.3.jar:6.1.3]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:754) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:456) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:334) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.2.jar:3.2.2]
at org.example.springkotlinrestfulapisample.SpringKotlinRestfulApiSampleApplicationKt.main(SpringKotlinRestfulApiSampleApplication.kt:21) ~[main/:na]
My gradle:
plugins {
id("org.springframework.boot") version "3.2.2"
id("io.spring.dependency-management") version "1.1.4"
kotlin("jvm") version "1.9.22"
kotlin("plugin.spring") version "1.9.22"
}
group = "org.example"
version = "0.0.1-SNAPSHOT"
java {
sourceCompatibility = JavaVersion.VERSION_21
}
repositories {
mavenCentral()
maven(url = "https://jitpack.io")
}
dependencies {
// Spring Dependencies
implementation("org.springframework.boot:spring-boot-starter-web:3.2.2")
implementation("org.springframework.data:spring-data-jpa:3.2.2")
implementation("org.springframework.boot:spring-boot-starter-data-jpa:3.2.2")
implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0")
// DB Depdendencies
implementation("jakarta.persistence:jakarta.persistence-api:3.2.0-M1")
implementation("org.hibernate:hibernate-core:6.4.4.Final")
implementation("org.hibernate:hibernate-entitymanager:6.0.0.Alpha7")
implementation("com.h2database:h2:1.3.148")
// Axon
implementation("org.axonframework:axon-spring:4.9.2")
// Others
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0-RC2")
implementation("io.spring.gradle:dependency-management-plugin:0.5.1.RELEASE")
}
tasks.withType<KotlinCompile> {
kotlinOptions {
freeCompilerArgs += "-Xjsr305=strict"
jvmTarget = "21"
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
Due to documentation and other stack-overflow threads, the implementation should be correct.
You have to remove next ones dependencies frombuild.gradle
file, I guess that the problem is in: versions compatibility.
// DB Depdendencies
implementation("jakarta.persistence:jakarta.persistence-api:3.2.0-M1")
implementation("org.hibernate:hibernate-core:6.4.4.Final")
implementation("org.hibernate:hibernate-entitymanager:6.0.0.Alpha7")
Because you are using io.spring.dependency-management
and spring will automatically inject necessary dependencies for you and also version compatibility.