Closed MunYJ closed 2 years ago
안녕하세요.
pageQuery에서 groupBy를 사용할 경우 count를 위해 검색 대상이 되는 row의 갯수 만큼 1이라는 숫자가 메모리에 적재되기 때문에 groupBy를 제거하게 되었습니다. 대신 org.springframework.data.support.PageableExecutionUtils
을 사용하는 것을 추천 드립니다. 내부에 content 및 pageable 스펙을 보고 count 쿼리를 호출 여부를 결정하는 유틸성 로직이 들어가 있습니다.
val page = PageableExecutionUtils.getPage(orderIds.map { orders[it] }, spec.paging.toPageable()) {
count(spec)
}
말씀해주신 형변환 관련된 유틸은 아쉽게도 없습니다. 왜냐하면 형변환을 하기 위해서는 Criteria API가 아닌 JPQL을 사용해야 하기 때문입니다.
querydsl에서는 JPQL을 사용하고 있기 때문에 형변환이 가능하지만 kotlin-JDSL은 Criteria API를 사용하고 있어 불가능합니다.
올해는 개발 리소스가 없어 불가능하지만 내년에 kotlin-JDSL을 JPQL로 다시 만들려고 준비하고 있습니다. 그 때는 2.0이 아닌 3.0으로 오픈할 예정이고 3.0에서는 형변환 기능이 추가될 예정입니다. 기약만 말씀드려 죄송합니다.
ColumnSpec의 TypeCast의 경우
column(Entity::columnNm) as ColumnSpec<Int?>
column(Entity::columnNm) as ColumnSpec<String?>
등으로 변환하여 처리했습니다.
감사합니다.
column(Entity::columnNm) as ColumnSpec<Int?>
column(Entity::columnNm) as ColumnSpec<String?>
이미 확인하셨을 수도 있지만 위와 같이 사용하실 경우에는 한번 DB 쿼리를 확인해보시는 걸 추천 드립니다. 왜냐하면 한 곳은 String인데 한 곳은 Int라면 DB가 index를 안 타거나 자동 형변환을 위해 DB 리소스를 많이 사용할 수 있기 때문입니다.
안녕하세요. 제공해주신 kotlin-jdsl 사용 중에 궁금한 점이 있어 질문 드립니다.
pageQuery에서는 groupBy를 사용할 수 없게 되어있어서 현재는 listQuery로 받아 PageImpl로 변환하여 사용하고 있습니다. 더 좋은 방법이 있을지 의견 주시면 감사하겠습니다.
equal로 비교하는 column간 타입이 다른 경우 어떻게 사용하면 좋을지 의견 부탁 드립니다. querydsl의 경우 castToNum을 사용하면 string타입을 NumberExpression으로 변환해주는 것으로 알고 있는데, jdsl에서는 방법을 찾지 못했습니다.
버전 : hibernate-reactive-kotlin-jdsl-2.0.4.RELEASE
감사합니다.