org.springframework.dao .InvalidDataAccessApiUsageException: org.hibernate.query.sqm .InterpretationException

한지연·2023년 7월 11일
0

문제상황

querydsl을 사용하여 테이블 간 조인된 데이터를 가져올 때 오류가 발생함


코드

 @Override
    public List<BeforeListDto> myBeforeList(Long id) {

        List<Tuple> data = jpaQueryFactory.select(
                        beforeList.id, meeting.period, meeting.title
                ).from(beforeList).join(meeting).on(meeting.id.eq(beforeList.meeting.id))
                .where(user.id.eq(id)).fetch();

        return data.stream().map(
                d -> BeforeListDto.builder()
                        .id(d.get(beforeList.id))
                        .period(d.get(meeting.period))
                        .title(d.get(meeting.title))
                        .build()).toList();
    }

해결 방법

쿼리를 잘못 적었다. where절에 바로 user.id.eq(id)로 하면 안 되고 .where(beforeList.user.id.eq(id)) 이렇게 적어야 한다. 내가 무슨 생각으로 바로 user를 가져다 넣었는지 모르겠다.

  • code
    @Override
    public List<BeforeListDto> myBeforeList(Long id) {

        List<Tuple> data = jpaQueryFactory.select(
                        beforeList.id, meeting.period, meeting.title
                ).from(beforeList).join(meeting).on(meeting.id.eq(beforeList.meeting.id))
                .where(beforeList.user.id.eq(id))
                .fetch();

        return data.stream().map(
                d -> BeforeListDto.builder()
                        .id(d.get(beforeList.id))
                        .period(d.get(meeting.period))
                        .title(d.get(meeting.title))
                        .build()).toList();
    }

이젠 데이터를 잘 불러온다.

profile
배우고 활용하는 것을 즐기는 개발자, 한지연입니다!

0개의 댓글