From f260543fea6cda4dda68db0e6f591179c73ac93e Mon Sep 17 00:00:00 2001 From: CokeLee777 Date: Thu, 18 Jan 2024 18:27:14 +0900 Subject: [PATCH] [FIX] fix ootd search query --- .../repository/post/PostRepositoryImpl.java | 57 +++++++++++-------- 1 file changed, 33 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/dailyon/snsservice/repository/post/PostRepositoryImpl.java b/src/main/java/com/dailyon/snsservice/repository/post/PostRepositoryImpl.java index 2d92c39..e8db893 100644 --- a/src/main/java/com/dailyon/snsservice/repository/post/PostRepositoryImpl.java +++ b/src/main/java/com/dailyon/snsservice/repository/post/PostRepositoryImpl.java @@ -335,40 +335,49 @@ public int softBulkDeleteByIds(List ids) { @Override public Page findAllBySearchQueryAndIdAscAndIsDeletedFalse(String query, Pageable pageable) { JPAQuery indexQuery = - jpaQueryFactory - .selectDistinct(post.id) - .from(post) - .leftJoin(post.hashTags, hashTag) - .leftJoin(post.member, member) - .where(post.title.eq(query) - .or(hashTag.name.eq(query)) - .or(member.nickname.eq(query)).and(post.isDeleted.eq(false))) - .orderBy(getOrderCondition(pageable.getSort()).toArray(OrderSpecifier[]::new)) - .offset(pageable.getOffset()) - .limit(pageable.getPageSize()); + jpaQueryFactory + .select(post.id) + .from(post) + .innerJoin(post.hashTags, hashTag) + .innerJoin(post.member, member) + .where( + (post.title + .contains(query) + .or(hashTag.name.contains(query)) + .or(member.nickname.contains(query)) + .and(post.isDeleted.eq(false)))) + .orderBy(getOrderCondition(pageable.getSort()).toArray(OrderSpecifier[]::new)) + .offset(pageable.getOffset()) + .limit(pageable.getPageSize()); List indexes = indexQuery.fetch(); if (indexes.isEmpty()) { return new PageImpl<>(new ArrayList<>(), pageable, 0); } JPAQuery resultQuery = - jpaQueryFactory - .selectDistinct(post) - .from(post) - .leftJoin(post.postImage, postImage) - .fetchJoin() - .leftJoin(post.hashTags, hashTag) - .fetchJoin() - .leftJoin(post.member, member) - .fetchJoin() - .where(post.id.in(indexes)) - .orderBy(getOrderCondition(pageable.getSort()).toArray(OrderSpecifier[]::new)); + jpaQueryFactory + .selectDistinct(post) + .from(post) + .leftJoin(post.postImage, postImage) + .fetchJoin() + .leftJoin(post.hashTags, hashTag) + .fetchJoin() + .leftJoin(post.member, member) + .fetchJoin() + .where(post.id.in(indexes)) + .orderBy(getOrderCondition(pageable.getSort()).toArray(OrderSpecifier[]::new)); List result = resultQuery.fetch(); JPAQuery countQuery = - jpaQueryFactory.select(post.id).from(post) - .where(post.id.in(indexes).and(post.isDeleted.eq(false))); + jpaQueryFactory + .select(post.id) + .from(post) + .innerJoin(post.hashTags, hashTag) + .innerJoin(post.member, member) + .where( + (post.title.contains(query).or(hashTag.name.contains(query)).or(member.nickname.contains(query))) + .and(post.isDeleted.eq(false))); long total = countQuery.fetchCount(); return new PageImpl<>(result, pageable, total);