봄꾸
1k
2020-05-10 21:40:40 작성 2020-05-10 21:45:46 수정됨
3
349

JPQL에서 안되는 게 Querydsl에서 어떻게 가능한거죠?


(김영한 저자의 자바 ORM 표준 JPA 프로그래밍 책으로 공부했습니다.)

JPQL에서 subquery는 WHERE, HAVING 절에서만 사용 가능하다고 나와있는데

QueryDsl에서는 Select 절에서도 사용하는 케이스를 봤습니다. (링크: https://jojoldu.tistory.com/379)

Querydsl은 자바 코드로 작성해서 JPQL을 만들어주는 것으로 알고 있는데 JPQL에서 안되는게

어떻게 Querydsl에서 가능한건지 궁금합니다. 아니면 책의 내용보다 JPA가 현재는 버전이 업그레이드 되면서 더 많은 기능을 지원하게 되서 JPQL 또한 가능한건가요? 아니면 Hibernate를 사용하고 있는데 JPA 구현체에 따라 다른건가요?

0
  • 답변 3

  • 컴포지트
    1k
    2020-05-11 10:42:55

    참고로 말씀드리자면 querydsl 은 JPA 구현체가 아닙니다. 단지 JPA 호환성이 존재할 뿐입니다.

    이건 다른 대체ORM인 jooq 등도 마찬가지입니다.

  • 봄꾸
    1k
    2020-05-11 12:25:32 작성 2020-05-11 12:26:13 수정됨

    @컴포지트

    JPA 구현체인 Hibernate를 말한 것입니다. Querydsl이 구현체라고 한 적 없습니다.

  • 봄꾸
    1k
    2020-05-13 22:14:44 작성 2020-05-13 22:17:28 수정됨

    자답합니다. 현재 제가 댓글을 작성하는 시점에서 JPA 표준은 스칼라 서브 쿼리 지원안하지만

    Hibernate는 지원합니다. 따라서 구현체를 Hibernate로 사용하시면 JPQL 및 QueryDsl 스칼라 서브 쿼리 사용 가능합니다.

  • 로그인을 하시면 답변 을 등록할 수 있습니다.