coalesce를 활용한 조건 질의에 대해서 궁금한게 있습니다
1066
작성한 질문수 1
안녕하세요 :) 열심히 찾아보고 찾아봤는데, 잘 모르겠어서 문의글 처음 올려봅니다.
coalesce를 활용하여 값이 없을때는 특정 값이 바인딩되도록 하여 비교하는 조건을 작성하려고 합니다.
오라클 쿼리에선 nvl이라는 것을 활용하여 다음과 같은 쿼리가 나오게 하려고 하는데요.
nvl(test_code, '01') = '01'
Expressions.asEnum(entity.testCode.coalesce(TestCode.DEFAULT)).eq(testCode.DEFAULT)
이렇게 조건을 걸었을때
쿼리에선 다음과 같이 나옵니다
nvl(table.test_code, '<byte[]>') = '<byte[]>'
해당 엔티티에는 enum을 위해 converter도 설정되어 있는데 byte[]로 나오는게 이해되지 않습니다.
할 수 없이 enum을 string으로 변경하여 비교하도록 하니 쿼리는 동작합니다.
Expressions.asString(entity.testCode.stringValue()).coalesce('01').asString().eq('01')
아래 코드와 같이 쿼리가 나옵니다.
nvl(to_char(table.test_code), '01')='01'
이미 varchar형태인 컬럼을 to_char로 변경해서 돌리는게 비효율적인 것 같습니다.
조언 부탁드립니다
답변 2
0
저는 기황님 코드에서 도움을 받고서 해결했던 내용 공유드립니다.
entity.testCode.coalesce(TestCode.DEFAULT)
to_char 이 호출되는게 불필요해보여서 해당 구문을 Expressions.asEnum 으로 감싸지 않고,
entity.testCode.coalesce(Expressions.asString(TestCode.DEFAULT.getCode())) 를 사용해서 처리했더니, 원하는 결과가 나왔습니다.
SpringBoot 4.X에서의 Querydsl 설정
0
157
2
querydsl 오픈소스에 대한 질문
1
101
1
예제에서의 카운트 쿼리에서 join문과 where문은 필요없지 않나요?
0
127
1
Querydsl 6.X버전에 대해서 어떻게 생각하시나요?
0
348
2
여러 테이블 조인하여 통계치를 구하고자 할 때 어떤 방법이 더 효율적일까요
1
86
1
fetchResults()는 더이상 권장되지 않는다는데 맞나요?
0
172
1
querydsl sum() 메서드 없어요.
0
169
2
build 디렉터리 생성
0
152
2
자바 ORM 표준 JPA 프로그래밍 - 기본편 듣고 바로 학습해도 괜찮을까요?
0
123
2
현재 Querydsl에서 from절 서브쿼리를 지원하나요?
0
99
1
오타 제보 드립니다.
0
79
2
벌크 연산과 flush, clear
0
84
1
Run As Intellij 로 변경시 Q타입 import 불가
0
95
1
QHello import하기 문제 발생
0
157
2
등록된 함수 보는법(H2Dialect) 질문
0
76
2
5.0부터 Querydsl은 향후 fetchCount() , fetchResult() 를 지원하지 않기로 결정했다고 하는데 이에 맞는 강의
1
208
2
[환경설정 PDF 부트 3.0이후 설명 질문] build.gradle에 compileQuerydsl을 정의하지 않은 상태에서 Gradle->Tasks->other->compileQuerydsl을 클릭하라고 하는 이유가 무엇인가요??
1
213
1
querydsl 설정 문제
0
228
2
quey dsl 설정부분
0
168
2
count 쿼리 관련 질문입니다!
0
79
1
stringtemplate를 이용하여 where절 검색 방법 질문 드립니다.
0
98
1
답변부탁드리겠습니다.
0
95
2
(OrderSpecifier)관련 내용 어디있을가요
0
68
1
중급문법 벌크연산에서
0
85
2





