작성
·
239
0
안녕하세요, querydsl 강의를 듣고있는 학생입니다.
querydsl을 이용하여 토이 프로젝트를 진행하고 있는데, 한가지 여쭤볼 것이 있어서 질문 남깁니다...
다름이 아니라, querydsl의 경우 sorting 조건이 필드네임만 가능한 것일까요??
저는 entity에서 정의한 함수값을 이용하여 sorting 하고 싶은데
관련 내용을 검색해 보았는데, 딱히 해결 방법이 나오지 않아서 고민중입니다ㅠㅠ
좋은 강의 감사합니다!!
저는 이렇게 board entity에서 정의한 함수 getRemainRecruitNumber 값에 따라 sorting 하려는 시도 중입니다..
public class Board extends BaseEntity {
...
public int getRemainRecruitNumber() {
return this.recruitCount - getApprovedCount();
}
}
답변 2
1
0
안녕하세요. 소연님
querydsl의 결과는 결국 JPQL이 만들어집니다. 이 JPQL은 또 SQL로 번역됩니다. 따라서 SQL로 할 수 있는 로직만 실행할 수 있습니다. 해당 코드는 자바 함수이기 때문에 JPQL이나 SQL에서 사용하는 것이 불가능합니다.
대신에 JPQL이나 SQL에서 다음과 같은 방식은 사용할 수 있습니다.
order by item.count2 - item.count1 desc
querydsl에서 사용하려면 다음 코드를 참고해주세요.
@Test
void sortTest() {
List<Item> result = queryFactory
.selectFrom(item)
.orderBy(item.count2.subtract(item.count1).desc())
.fetch();
System.out.println("result = " + result);
}
감사합니다.