작성자 : 김여원, 박재용
키워드 검색
public Page<Post> findAllByContainingKeyword(int page, Set<String> keywords, String sortType, Long companyId) {
BooleanBuilder builder = new BooleanBuilder();
for (String key : keywords) {
builder.or(post.content.like("%"+key+"%"))
.or(post.title.like("%"+key+"%"))
.or(keyword.keyword.like("%"+key+"%"));
}
builder.and(post.member.company.id.eq(companyId)
.and(post.valid.eq(true)));
JPAQuery<Post> result = new JPAQuery<>(entityManager);
return new PageImpl<>(result.select(post)
.from(post)
.join(post.keywords, keyword).fetchJoin()
.join(post.member, member).fetchJoin()
.where(builder)
.distinct()
.offset((page-1)*10)
.limit(10)
.orderBy(sortingFilter(sortType))
.fetch());
}
카테고리 검색
public Page<Post> findAllByContainingCategory(int page, String c, String sortType, Long companyId) {
BooleanBuilder builder = new BooleanBuilder();
builder.and(post.member.company.id.eq(companyId))
.and(post.valid.eq(true));
JPAQuery<Post> result = new JPAQuery<>(entityManager);
return new PageImpl<>(result.select(post)
.from(post)
.join(post.category, category).fetchJoin()
.where(builder
.and(post.category.categoryName.eq(c)))
.distinct()
.offset((page-1)*10)
.limit(10)
.orderBy(sortingFilter(sortType))
.fetch());
}
OrderBy에 사용하는 메서드