728x90
320x100
은근히 적용하기 빡센 쿼리 데셀....정리해놓자
📌 build.gradle 추가
dependencies {
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
}
def generated = "build/generated"
sourceSets {
main {
java {
srcDirs += [generated]
}
}
}
tasks.withType(JavaCompile).configureEach {
options.generatedSourceOutputDirectory = file(generated)
}
📌 Q 클래스 생성 확인
- 터미널에 명령어 삽입 : ./gradlew clean build
- 인텔리제이 - 상단메뉴 [build] - [build Project]
둘 중에 하나만 하면되고, 하게되면 아래와 같이 엔티티마다 큐 클래스가 생성됨.
큐클래스까지는 생성되는데 인식이 안되는 것 같다면 아래의 포스팅 확인
[JPA/QueryDSL] 엔티티가 올바른 경로에 있음에도 자꾸 컴파일 에러가 뜹니다.
🛠️ 문제 상황JPA와 QueryDSL을 사용하는 프로젝트에서 레파지토리나 서비스에서 엔티티를 Import해서 가져다 쓰는데, 소스코드상으로는 빨간줄도 없고, 에러도 없는데 컴파일 시에, 해당 엔티티
ddururiiiiiii.tistory.com
큐클래스는 커녕 관련 폴더가 안보여요!
프로젝트 화면에서 점 세개짜리 클릭 후 [Tree Apperance] - [Show Excluded Files]를 체크하면 보일것임.
📌 JPAQueryFactory Bean 등록
@Configuration
public class QueryDslConfig {
private final EntityManager entityManager;
public QueryDslConfig(EntityManager entityManager) {
this.entityManager = entityManager;
}
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}
📌 Repository 커스텀 인터페이스 + 구현체 만들기
- FeedRepositoryCustom.java
public interface FeedRepositoryCustom {
List<Feed> searchFeeds(String keyword, Pageable pageable);
}
- FeedRepositoryImpl.java
@Repository
@RequiredArgsConstructor
public class FeedRepositoryImpl implements FeedRepositoryCustom {
private final JPAQueryFactory queryFactory;
@Override
public List<Feed> searchFeeds(String keyword, Pageable pageable) {
return queryFactory
.selectFrom(feed)
.leftJoin(feed.book).fetchJoin()
.where(feed.isBlinded.isFalse()
.and(feed.content.containsIgnoreCase(keyword)
.or(feed.book.title.containsIgnoreCase(keyword))))
.orderBy(feed.createdAt.desc())
.offset(pageable.getOffset())
.limit(pageable.getPageSize())
.fetch();
}
}
📌 Repository에 Custom 연결
public interface FeedRepository extends JpaRepository<Feed, Long>, FeedRepositoryCustom {
}
끝...!
728x90
320x100
'💻 뚝딱뚝딱 > 북북클럽' 카테고리의 다른 글
[개발일지 #032] 각종 피드 조회 (특정 회원의 피드 목록 조회, 특정 회원이 좋아요 누른 피드 목록 조회) (0) | 2025.05.02 |
---|---|
[개발일지 #031] 피드 검색 조회 (0) | 2025.05.02 |
[개발일지 #030] 좋아요(Like) 랭킹에서 피드 상세정보 함께 내려주기 (0) | 2025.05.02 |
[개발일지 #029] 책(Book) - Spring WebClient로 외부 API 연동: KakaoBookClient 구현 (0) | 2025.05.01 |
[개발일지 #028] 좋아요 순 피드 조회 (주간/월간/연간/누적) (0) | 2025.05.01 |