[스프링JPA강좌]Querydsl오라클쿼리시퀀스(Sequence)사용예문
SQLExpressions.nextval("시퀀스이름")
아래와 같이 TYPE을 줄 수도 있다.
SQLExpressions.nextval(Integer.class, "시퀀스이름")
2016년 10월 28일 금요일
[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][Querydsl오라클SQL팁]오라클ROWID,ROWNUM,LEVEL,SYSDATE같은의사칼럼사용하기
[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
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
[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][스프링JPA강좌,Querydsl,오라클DB에서 쿼리타입Q타입생성하기,SQLQueryFactory]
[스프링JPA강좌,Querydsl,오라클DB에서 쿼리타입Q타입생성하기,SQLQueryFactory] Spring Data JPA에서 오라클DB에 직접 쿼리하기 위해 오라클DB쪽 테이블을 자바쪽 프로젝트에 쿼리타입으로 생성해야 하는데, 그와 관련된 메이븐 설정 및 방법 입니다.
첨부 파일 참조하세요~
감사합니다.
첨부파일URL참조 - http://ojc.asia/bbs/board.php?bo_table=LecJpa&wr_id=147
첨부 파일 참조하세요~
감사합니다.
첨부파일URL참조 - http://ojc.asia/bbs/board.php?bo_table=LecJpa&wr_id=147
[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][스프링DATAJPA팁]Querydsl4.0.8오라클쿼리WITH구문오류!!(Querydsl,오라클쿼리강좌)
[스프링DATAJPA팁]Querydsl4.0.8오라클쿼리WITH구문오류!!(Querydsl,오라클쿼리강좌)
아래와 같은 SQL 쿼리를 만들기 위해
(WITH문을 이용하여 MYEMP1, MYDEPT1 테이블에서 부서명, 부서별직원평균급여 구하기)
with myemp2 as (
select MYEMP1.DEPTNO, avg(MYEMP1.SAL) sal
from TEST.MYEMP1 MYEMP1
group by MYEMP1.DEPTNO)
select MYDEPT1.DNAME, myemp2.SAL
from MYDEPT1
inner join myemp2
on MYDEPT1.DEPTNO = myemp2.DEPTNO
다음과 같이 Querydsl4.0.8 버전에서 작성했는데
QMyemp1 myemp1 = new QMyemp1.myemp1;
QMyemp1 myemp2 = new QMyemp1("myemp2");
List<Tuple> depts = queryFactory.query()
.with(myemp2,
SQLExpressions
.select(myemp1.deptno, myemp1.sal.avg().as("sal"))
.from(myemp1)
.groupBy(myemp1.deptno))
.select(mydept1.dname, myemp2.sal)
.from(mydept1)
.innerJoin(myemp2).on(mydept1.deptno.eq(myemp2.deptno))
.fetch();
Querydsl4.0.8 버전에서는 WITH구문이 다음과 같이 해석된다.
(innerjoin에서 WITH구문에서 만든 myemp2와 조인을 해야되는데
myemp1 테이블과 조인하여 이상한 결과가 나오게 된다. )
with myemp2 as (
select MYEMP1.DEPTNO, avg(MYEMP1.SAL) sal
from TEST.MYEMP1 MYEMP1
group by MYEMP1.DEPTNO)
select MYDEPT1.DNAME, myemp2.SAL
from MYDEPT1
join MYEMP1 myemp2
on MYDEPT1.DEPTNO = myemp2.DEPTNO
Querydsl 버전을 4.0.9 이상으로 올리자.
잘 동작된다.
아래와 같은 SQL 쿼리를 만들기 위해
(WITH문을 이용하여 MYEMP1, MYDEPT1 테이블에서 부서명, 부서별직원평균급여 구하기)
with myemp2 as (
select MYEMP1.DEPTNO, avg(MYEMP1.SAL) sal
from TEST.MYEMP1 MYEMP1
group by MYEMP1.DEPTNO)
select MYDEPT1.DNAME, myemp2.SAL
from MYDEPT1
inner join myemp2
on MYDEPT1.DEPTNO = myemp2.DEPTNO
다음과 같이 Querydsl4.0.8 버전에서 작성했는데
QMyemp1 myemp1 = new QMyemp1.myemp1;
QMyemp1 myemp2 = new QMyemp1("myemp2");
List<Tuple> depts = queryFactory.query()
.with(myemp2,
SQLExpressions
.select(myemp1.deptno, myemp1.sal.avg().as("sal"))
.from(myemp1)
.groupBy(myemp1.deptno))
.select(mydept1.dname, myemp2.sal)
.from(mydept1)
.innerJoin(myemp2).on(mydept1.deptno.eq(myemp2.deptno))
.fetch();
Querydsl4.0.8 버전에서는 WITH구문이 다음과 같이 해석된다.
(innerjoin에서 WITH구문에서 만든 myemp2와 조인을 해야되는데
myemp1 테이블과 조인하여 이상한 결과가 나오게 된다. )
with myemp2 as (
select MYEMP1.DEPTNO, avg(MYEMP1.SAL) sal
from TEST.MYEMP1 MYEMP1
group by MYEMP1.DEPTNO)
select MYDEPT1.DNAME, myemp2.SAL
from MYDEPT1
join MYEMP1 myemp2
on MYDEPT1.DEPTNO = myemp2.DEPTNO
Querydsl 버전을 4.0.9 이상으로 올리자.
잘 동작된다.
[자바강좌,JPA강좌,스프링강좌추천★탑크리에듀][Spring Data JPA,Querydsl강좌]오라클SQL조인,ROWNUM,OracleGrammar.rownum
[Spring Data JPA,Querydsl강좌]오라클SQL조인,ROWNUM,OracleGrammar.rownum
아래 두가지 방법 모드 가능하다.
// List<Tuple> rows = queryFactory.select(myemp1.ename, mydept1.dname)
// .from(myemp1).innerJoin(mydept1)
// .on(myemp1.deptno.eq(mydept1.deptno)).limit(5).fetch();
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
아래 두가지 방법 모드 가능하다.
// List<Tuple> rows = queryFactory.select(myemp1.ename, mydept1.dname)
// .from(myemp1).innerJoin(mydept1)
// .on(myemp1.deptno.eq(mydept1.deptno)).limit(5).fetch();
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
2016년 10월 27일 목요일
[자바학원,스프링학원추천]JPA 상속관계 매핑(@MappedSuperclass, @Inheritance,@DiscriminatorValue,@DiscriminatorColumn
JPA에서 상속관계 매핑 방법에 대해 설명한 자료입니다.
RDB는 객체지향처럼 상속이 존재하지 않으며 대신 Super Type, Sub Type 이라는 개념이 존재한다. 슈퍼/서브 타입 논리모델을 물리적인 테이블로 변환할 때는 하나의 통합된 테이블로 표시(단일 테이블 전략)하거나, 각각 테이블로 별도로 두어 조회할 때 조인을 이용하거나 서브타입만 테이블로 변환을 하는 방법이 있다.
[오라클학원,SQL기초학원추천_탑크리에듀]스칼라서브쿼리(Scalar Subquery)
오라클 SQL초보자를 위한 스칼라 서브쿼리에 대한 간단한 설명자료 입니다. 데이터 건수가 많지 않다면 조인보다 가끔 스칼라 서브쿼리가 더 효율적일 때가 있죠. 참조하세요.
피드 구독하기:
글 (Atom)