๋ฌธ์ ์ํฉ
@Override
public Optional<DayScheduleDetail> findDayWithSchedulesByDayId(Long dayId) {
DayScheduleDetail dayScheduleDetail = query
.from(day)
.innerJoin(day.schedules, schedule)
.where(day.id.eq(dayId))
.orderBy(schedule.scheduleIndex.value.asc())
.transform(groupBy(day.id).as(new QDayScheduleDetail(
day.id,
day.trip.id,
day.tripDate,
list(new QDayScheduleDetail_ScheduleSummary(
schedule.id,
schedule.title,
schedule.place.placeName,
schedule.place.coordinate.latitude,
schedule.place.coordinate.longitude
))
))).get(dayId);
return Optional.ofNullable(dayScheduleDetail);
}
์ฝ๋๋ฅผ ์์ฑํด๋๊ณ ํ ์คํธ๋ฅผ ๋๋ ค๋ณด๋, java.lang.Object org.hibernate.ScrollableResults.get(int) ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฒ์ ๋ง์ฃผํ๋ ์ค๋ฅ์ด๊ธฐ๋ ํ๊ณ , ๋ฌธ๋ฒ์ ์ธ ์ค๋ฅ๋ ์๋์ด์ ๊ฒ์์ ํตํด ์ฐพ์๋ณด์์ต๋๋ค.
ํด๊ฒฐ
QueryDSL์ ๋ฌธ๋ฒ์ ์ธ ์ค๋ฅ๋ ์๋ ๊ฒ ๊ฐ์์ ๊ฒ์์ ํด๋ณธ ๊ฒฐ๊ณผ ์๋ ๋งํฌ(QueryDSL gitHub)์์ ํด๋น ์ด์์ ๋ํด ๋ค๋ฃจ๊ณ ์์์ต๋๋ค.
https://github.com/querydsl/querydsl/issues/3428
java.lang.NoSuchMethodError: 'java.lang.Object org.hibernate.ScrollableResults.get(int)' with Hibernate 6.1.5.Final · Issue #34
Observed vs. expected behavior Observed: Caused by: java.lang.NoSuchMethodError: 'java.lang.Object org.hibernate.ScrollableResults.get(int)' at deployment.acoset-server-ear.ear//com.querydsl.jpa.Sc...
github.com
์์ฝํ์๋ฉด QueryDSL ์ ์ฌ์ฉํ์ฌ Spring Data JPA ์ ํจ๊ป ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๋ก QueryDSL 4.4.1 ๋ฒ์ ์ดํ๋ถํฐ ํด๋น ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์๋ค๊ณ ํฉ๋๋ค. (์ง๊ธ ๋ฒ์ 5.0.0์ธ๋ฐ ์ ์์ง๊น์ง ์ ๊ณ ์นจ..?)
๋ฌธ์ ๋ groupBy() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋ orderBy() ๋ฉ์๋์ ํจ๊ป ์ฌ์ฉํ ๋ ๋ฐ์ํ๋ ๋ฌธ์ ๋ก ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก๋ 2๊ฐ์ง๊ฐ ์๋ค๊ณ ํฉ๋๋ค.
1. QueryDSL ๋ฒ์ ์ ๋ค์ด๊ทธ๋ ์ด๋ ํ๋ ๋ฐฉ๋ฒ
2.์ค์ ํ์ผ์์ JPAQueryFactory ๋น ๋ฑ๋ก์์ JPQLTemplates๋ฅผ JPQLTemplates.DEFAULT ๋ก ๋ง์ถ์ด ์ฃผ๋ ๋ฐฉ๋ฒ
๊ฐ์ธ์ ์ผ๋ก ๋ฒ์ ๋ค์ด๊ทธ๋ ์ด๋๋ ๊ธฐ์กด์ ์์ฑํด๋์ ์ฝ๋์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ์ง ๋ชจ๋ฅด๊ธฐ์ 2๋ฒ ๋ฐฉ์์ ํตํด ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์ต๋๋ค.
@Configuration
public class QueryDslConfig {
@PersistenceContext
private EntityManager em;
@Bean
public JPAQueryFactory jpaQueryFactory(){
return new JPAQueryFactory(JPQLTemplates.DEFAULT ,em);
}
}
๋๊ธ