SQL function은 JPA와 같이 Dialect에 등록된 내용만 호출할 수 있다.
member M으로 변경하는 replace 함수 사용
@Test
public void sqlFunction() {
List<String> result = queryFactory
.select(
Expressions.stringTemplate("function('replace', {0}, {1}, {2})",
member.username, "member", "M"))
.from(member)
.fetch();
for (String s : result) {
System.out.println("s = " + s);
}
}
소문자로 변경해서 비교해라
@Test
public void sqlFunction2() {
List<String> result = queryFactory
.select(member.username)
.from(member)
// .where(member.username.eq(
// Expressions.stringTemplate("function('lower', {0})", member.username)))
.where(member.username.eq(member.username.lower()))
.fetch();
for (String s : result) {
System.out.println("s = " + s);
}
}
lower 같은 ansi 표준 함수들은 querydsl이 상당부분 내장하고 있다. 따라서 다음과 같이 처리해도 결과는 같다.
.where(member.username.eq(member.username.lower()))
출처 : 김영한 JPA 스프링 데이터 강의
'Querydsl' 카테고리의 다른 글
동적 쿼리와 성능 최적화 조회 - Builder 사용 (0) | 2022.07.26 |
---|---|
실무 활용 - 순수 JPA와 Querydsl (0) | 2022.07.26 |
수정, 삭제 벌크 연산 (0) | 2022.07.26 |
동적 쿼리 - Where 다중 파라미터 사용 (0) | 2022.07.25 |
동적 쿼리 - BooleanBuilder 사용 (0) | 2022.07.25 |