게시판 검색 기능 구현중에 어떤 단어를 검색하면 그 단어를 포함한 사용자들을 찾아서 그 사용자들의 게시물을 가져오는 기능을 구현하게 되었다.
처음에 짤때에는 사용자 엔티티를 조회하는 쿼리 구문과 그 사용자 엔티티와 매핑되어있는 게시물 리스트를 받아서 가져오는 쿼리 구문으로 짜보았다. 다른 Repository에 쿼리를 두번 날리는것은 비효율적이라 생각하여 두 엔티티의 연관관계를 원래 설정된 단방향에서 양방향으로 바꾸고 UserCareService(게시물)에서 userEntity(사용자명 보관 엔티티)로 호출하며 쿼리문을 짜보았다.
Repository
@Query("SELECT care FROM UserCareService care " +
"JOIN care.userEntity user " +
"WHERE user.username LIKE %:keyword%")
Page<UserCareService> findByUsernameInUserCareService(@Param("keyword") String keyword, Pageable pageable);