인프런 커뮤니티 질문&답변

박소연님의 프로필 이미지
박소연

작성한 질문수

실전! Querydsl

querydsl sorting 조건에 대한 질문입니다

작성

·

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);
}

감사합니다.

박소연님의 프로필 이미지
박소연

작성한 질문수

질문하기