지금 보니까 queryDsl 이 JPQL로 변환해서 사용되는것 같은데
이때 변환된 JPQL에서 Member객체를 member1이라고 별칭 줘서 사용하는데
order by에서는 별칭으로 사용이 안된것같음;; 이것때문에 지금 에러나는것같은데
해결할려면 Member 객체 별칭을 다르게 줘야하나..
지금 보니까 queryDsl 이 JPQL로 변환해서 사용되는것 같은데
이때 변환된 JPQL에서 Member객체를 member1이라고 별칭 줘서 사용하는데
order by에서는 별칭으로 사용이 안된것같음;; 이것때문에 지금 에러나는것같은데
해결할려면 Member 객체 별칭을 다르게 줘야하나..
pageable에 값이 어떻게 들어와?
PageRequest.of(0,10,Sort.by("email").descending()) 으로 맞춰줌
email이 컬럼으로 정의되지 않았는데 pageable에서는 그거로 정렬하려다보니 오류가 발생하는듯?
컬럼을 정의한다는게 애너테이션으로 @Column(name = "email") 이런식으로 붙여준다는 얘기임?
응
근데 기본적으로 클래스에 @Entity 붙여주면 따로 옵션주는거 아니면 자동으로 필드이름으로 컬럼생성 되는거 아님?
아 맞네, 그래도 항상 붙이는 습관을 들이는게 좋아 그럼 이유가 뭘까.. 소스 공유해볼래?
로그 다 보이게좀 부탁해
소스 복붙해드림?
응 PageRequest.of(0,10,Sort.by("email").descending()) 이거도 코드좀 보여줘 혹시 member.email인가 의심스러워서
호출 어디서 하는거야? 잘 못찾겠네
여기서 testSearch() 메서드
아 찾았음
흠.. 이게 원인인지는 모르겠는데 query.fetch 하지 말고, applyPagination의 반환 값에다가 fetch 해볼래?
결과는 같넹
그럴거같긴 함 적용이 안된거면 order by도 안됐어야해서
apply sort 부분이 의심스러워서 보는중
https://github.com/spring-projects/spring-data-jpa/blob/a95d25aa8b1481689f798b6f735b918ca19dd8d9/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/support/Querydsl.java#L230
겜하면서 보느라 좀 느리니까 너도 봐봐
아 근데 이상하네.. 내 코드에선 똑같이 해서 잘 동작하는데
컬럼 애노테이션 한번 붙여볼래? 그거 없어서 path builder가 오동작하는지 의심스럽네
아 코드 보니까 붙였네 --; 디버깅 해서 왜 path가 저렇게 붙는지 추적해보고 싶은데..
아 자린이라서 디버깅해도 너무 어렵다. 오늘 저녁에 와서 다시 봐야할듯 같이 고민해줘서 ㄳ ㅋㅋ
ㅂㅂ2
오 프로젝트 구성 잘 해놔서 나도 바로 돌려볼 수 있네? 내가 디버깅해볼게 ㅋ
보니까 QuerydslRepositorySupport 구현이 좀 이상하네 repository 객체마다 이미 type(Member)의 lower case(member)를 프리픽스로 붙이도록 정의돼있음 별칭은 쿼리마다 변하는 건데, 이런식이면 쓸수가 없지 그런데 생각해보면 Pageable의 Sort 정보가지고는 대상 별칭을 알아낼 수가 없음 pagination이야 어떤 별칭들이 있는지 상관 없지만, 정렬을 할거면 대상 컬럼의 테이블 별칭을 알아야하잖아? 그러므로 QuerydslRepositorySupport을 기반으로 Pageable의 Sort를 자동 적용하려면 별칭을 도메인 타입의 소문자로 고정해야해
내 생각에 위의 해결책은 좋지 않은 것 같고, Sort는 별도로 적용하는게 좋을 것 같음 .orderBy(member.email.desc()) 이런 식으로
내 코드에 있는 동일한 기능이 제대로 동작한다고 착각했었는데, 구현만 해두고 쓰지는 않던 기능이었음 ㅇㅇ;