[Querydsl오라클SQL팁]오라클ROWID,ROWNUM,LEVEL,SYSDATE같은의사칼럼사용하기
com.mysema.query.sql.oracle.OracleGrammar 클래스를 사용하면 되는데
static 필드로 선언되어 있고 아래처럼 사용하면 된다.
아래는 오라클의 계층형 쿼리를 Querydsl을 이용하여 구현 하였다.
[계층형질의에서 LEVEL 예제]
List<Tuple> rows = query
.select(StringExpressions.lpad(
Expressions.stringTemplate("' '").stringValue(),
OracleGrammar.level.subtract(1).multiply(2), ' ')
.concat(emp.ename),
emp.sal, emp.deptno)
.startWith(emp.ename.eq("KING"))
.connectByPrior(emp.empno.eq(emp.mgr))
.from(emp)
.fetch();
select lpad(' ',(level - 1) * 2,' ') || EMP.ENAME, EMP.SAL, EMP.DEPTNO
from EMP EMP
start with EMP.ENAME = 'KING'
connect by prior EMP.EMPNO = EMP.MGR
--------------------------------------------------------------------
[ROWNUM 예제]
List<Tuple> rows = queryFactory.select(myemp1.ename, mydept1.dname)
.from(myemp1).innerJoin(mydept1)
.on(myemp1.deptno.eq(mydept1.deptno))
.where(OracleGrammar.rownum.lt(6)).fetch();
select MYEMP1.ENAME, MYDEPT1.DNAME
from MYEMP1 MYEMP1
inner join MYDEPT1 MYDEPT1
on MYEMP1.DEPTNO = MYDEPT1.DEPTNO
where rownum < 6
댓글 없음:
댓글 쓰기