spring boot 3.x 업그레이드 후 querydsl transform 함수 작동이 안됩니다.

23.06.07 09:20 작성 조회수 1.34k

0

안녕하세요.

spring boot 3.1.0 으로 업그레이드하여 hibernate 6.2.2 버전을 사용하고 있습니다.

Querydsl 로 개발 도중 간단한 select 문은 정상적으로 작동이 되었는데,transform(groupBy().list()) 함수를 사용하니 에러가 발생하였습니다.

java.lang.NoSuchMethodError: 'java.lang.Object org.hibernate.ScrollableResults.get(int)'

	at com.querydsl.jpa.ScrollableResultsIterator.next(ScrollableResultsIterator.java:70)
	at com.querydsl.core.group.GroupByMap.transform(GroupByMap.java:57)
	at com.querydsl.core.group.GroupByMap.transform(GroupByMap.java:35)
	at com.querydsl.core.support.FetchableQueryBase.transform(FetchableQueryBase.java:55)

 

버전 문제인 것 같아 spring boot 2.x 버전으로 내리고 hibernate도 5.x 버전으로 내리니 정상 작동하더라구요...
spring boot 3.x 로 업그레이드하면서 transform() 함수가 제대로 동작을 안 하는 걸까요?

 

 

답변 2

·

답변을 작성해보세요.

0

마루님의 프로필

마루

2023.08.10

@Configuration

class QueryDslConfig(

@PersistenceContext

private val mainEntityManager: EntityManager,

) {

@Bean

fun jpaQueryFactory(): JPAQueryFactory {

return JPAQueryFactory(JPQLTemplates.DEFAULT, mainEntityManager)

}

}

 

이렇게 바꿔보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.08

안녕하세요, 인프런 AI 입니다.

오류 메시지를 보면 ‘java.lang.NoSuchMethodError’ 라는 메시지가 나와 java 버전에 따른 메서드 호환성 문제일 가능성이 있습니다. 하지만 일반적으로 spring boot 3.x 로 업그레이드하면서 발생한 문제는 아닙니다.

오류가 발생한 메소드인 org.hibernate.ScrollableResults.get(int) 를 찾을 수 없다고 나오므로, 찾을 수 없다는 뜻입니다. 런타임시 해당 메소드가 없는 경우, 빌드한 코드와 라이브러리 간에 호환성 문제가 발생했다는 것입니다.

따라서, 변화를 주는 라이브러리의 버전을 바꾸거나 스프링 부트 버전을 다시 내릴 필요는 없습니다. Hibernate 버전과 Querydsl 버전 간의 호환성 문제가 있을 가능성이 있습니다. Hibernate 버전과 Querydsl 버전을 호환되는 버전으로 맞춰서 사용하시는 것이 좋을 것 같습니다.

해당 오류의 원인을 찾기 위해서는 더 자세한 로그 메시지나 실행 환경에 대한 정보가 필요하며, 더불어 작성하신 코드와 쿼리를 보고 정확한 원인을 파악할 수 있습니다.

추가적으로 Hibernate 버전이 변경되면서 라이브러리 종속성이 변경되기 때문에, 변경된 라이브러리 또한 적용해보시는 것도 도움이 될 수 있습니다.

과정에서 잘못된 내용이나 오류가 발생한다면 인프런 커뮤니티에 다시 문의해주시기 바랍니다.

감사합니다.