Oracle, Hierarchical Queries

Database SQL Reference

SELECT *
FROM A
CONNECT BY LEVEL <= 3

QueryDsl, connectBy

CONNECT BY 쿼리가 오라클의 기능인 것을 확인하고 아래의 테스트 코드를 참고했다.

QueryDsl Github

또한, 구글에서 connectby site: https://querydsl.com/static/querydsl/4.4.0 검색어를 이용해 QueryDsl 자바 문서를 찾았다.

그런데, connectBy() 메소드가 호출이 안 되는 것이다. QueryDsl 자바 문서를 살펴보면 OracleQuery 객체를 사용해 호출하면 되는데 현재 프로젝트에서는 OracleQueryFactory 객체를 사용하고 있다.

그렇기 때문에 아래와 같이 사용해야 connectBy() 메소드를 호출할 수 있었다.

private final OracleQueryFactory queryFactory;
import static com.querydsl.sql.oracle.OracleGrammar.level;  // level pseudo column

queryFactory
  .query()  // 쿼리를 먼저 호출
  .select(all)
  .from(A)
  .connectBy(level.loe(3))