JPA

QueryDSL StringTemplate이란?

Junuuu 2023. 2. 3. 00:01
728x90

개요

QueryDSL에서 SQL Function을 사용하고 싶었는데 StringTemplate이라는 키워드를 발견하여 알아보고자 합니다.

 

StringTemplate이란?

Expressions.stringTemplate()
Experssions.numberTemplate()

위의 메서드를 통해 QueryDSL에서도 SQL Function을 사용할 수 있습니다.

 

 

실제 활용 예시

StringTemplate createDate = Expressions.stringTemplate(
    "cast(extract(epoch from {0}) as long)", qOrderSheetDetail.createDate
);

.where(
      qOrderSheet.createDate.gt(createDate)
);

 

 

⚠️ Warning

실행 중에QuerySyntaxException가 발생한다면 function 이후 작성한 문법에 오류가 있을 수 있습니다. 특히 괄호를 닫지 않았거나 파라미터 개수가 정확하지 않는 등의 실수를 할 수 있으니 쿼리를 다시 한번 확인해보시기 바랍니다.

 

사용하기 전 고려할 사항

- ANSI SQL(표준 SQL)을 활용하는 방안을 더 고려할 수 있습니다.

- DB에 부하를 주기보다는 Application에서 처리하는 것이 더 좋을 수 있습니다.

 

 

참고자료

https://jaime-note.tistory.com/78

 

[Querydsl] SQL 함수 사용하기

모든 소스 코드는 여기 있습니다. SQL 함수는 Dialect로 등록한 언어에 대해서만 사용할 수 있습니다. 현재 프로젝트에서는 H2 데이터베이스를 사용하므로 H2Dialect에 명시된 함수들만 사용할 수 있

jaime-note.tistory.com

https://ksk-developer.tistory.com/49

 

QueryDsl where 조건에서 stringtemplate 사용하자

몇 년 전에 querydsl을 사용하고 나서 해당 연산을 어떻게 해야 하는지 시행착오가 좀 있었는데 최근에 같은 팀원분이 어떻게 해야 되는지 물어봐서 다른 사람들도 모를 수 있겠구나 하고 글을 적

ksk-developer.tistory.com