Spring 3.0 Unable to resolve name

[org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy] as strategy [org.hibernate.boot.model.naming.PhysicalNamingStrategy]
김주혁's avatar
Jun 06, 2024
Spring 3.0 Unable to resolve name
 
Spring 3.0 + JPA + QueryDsl프로젝트를 새롭게 구성하면서 Hibernate 관련 에러가 계속해서 발생했는데,
 
그 중 하나
 
Unable to resolve name [org.springframework.boot.orm.jpa.hibernate. SpringPhysicalNamingStrategy] as strategy [org.hibernate.boot.model. naming.PhysicalNamingStrategy]
 
에러다.
 
위 에러는 Spring boot 2.x 버전과 Hibernate 5 버전까지는
 
jpa: database-platform: org.hibernate.dialect.MySQLDialect properties: hibernate: format_sql: true implicit_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy physical_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy hbm2ddl.auto: none
physical_naming_strateg가 org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
이지만,
 
Hibernate 6을 사용할 때는
jpa: database-platform: org.hibernate.dialect.MySQLDialect properties: hibernate: format_sql: true implicit_naming_strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy physical_naming_strategy: org.hibernate.boot.model.naming.CamelCaseToUnderscoresNamingStrategy hbm2ddl.auto: none hibernate: ddl-auto: none open-in-view: false show-sql: false
 
CamelCaseToUnderscoresNamingStrategy로 바꿔줘야 하며, 수정 후 문제가 해결됐다.
 
사용중인 패키지는 아래와 같다.
buildscript { ext { queryDslVersion = "5.0.0" } } plugins { id 'java' id 'org.springframework.boot' version '3.0.6' id 'io.spring.dependency-management' version '1.1.0' id 'org.asciidoctor.convert' version '1.5.8' id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" } group = 'io' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } ext { set('snippetsDir', file("build/generated-snippets")) set('springCloudVersion', "2022.0.2") } repositories { mavenCentral() } if (!project.hasProperty('profile') || !profile) { ext.profile = 'local' } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-aop' implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-test-autoconfigure' implementation 'org.springframework.boot:spring-boot-starter-cache' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-logging' testImplementation 'org.springframework.boot:spring-boot-starter-test' annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' developmentOnly 'org.springframework.boot:spring-boot-devtools' // db runtimeOnly 'com.mysql:mysql-connector-j' implementation 'com.zaxxer:HikariCP:5.0.1' implementation 'org.hibernate.orm:hibernate-core:6.0.2.Final' implementation group: 'org.javassist', name: 'javassist', version: '3.15.0-GA' implementation 'org.apache.commons:commons-pool2:2.11.1' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" // 파싱 implementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1' implementation 'com.googlecode.json-simple:json-simple:1.1.1' // jwt implementation 'io.jsonwebtoken:jjwt-api:0.11.5' implementation 'com.nimbusds:nimbus-jose-jwt:9.31' runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5' runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5' // aws implementation 'io.awspring.cloud:spring-cloud-starter-aws:2.4.4' // getter, setter 등.. compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' // Swagger implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2' } tasks.named('test') { useJUnitPlatform() } sourceSets { main { java { srcDirs = ["src/main/java"] } resources { srcDirs = ["src/main/resources", "src/main/java"] } } } def generated = 'src/main/generated' // querydsl QClass 파일 생성 위치를 지정 tasks.withType(JavaCompile) { options.getGeneratedSourceOutputDirectory().set(file(generated)) } // java source set 에 querydsl QClass 위치 추가 sourceSets { main.java.srcDirs += [ generated ] } // gradle clean 시에 QClass 디렉토리 삭제 clean { delete file(generated) } tasks.named('test') { outputs.dir snippetsDir useJUnitPlatform() } tasks.named('asciidoctor') { inputs.dir snippetsDir dependsOn test }
Share article
RSSPowered by inblog