본문 바로가기
개발공부/에러 다 드루와...!

검색기능 contaning 사용시.. 주의 사항!

by parkman

난 아직 구글링이 많이 부족하다..!!

 

프로젝트에서 게시물의 작성자or제목or내용에 포함된 단어 검색기능을 맡아서 열심히!! 만들어 보았다!

몇줄 안되지만 난 아직 코린이.. 이것도 또한 힘들었다.

 

@RestController
@RequiredArgsConstructor
public class BoardController {

    private final BoardRepository boardRepository;

    //등록
    @PostMapping("/api/board")
    public Board createBoard(@RequestBody BoardDto requestDto) {
        Board board = new Board(requestDto);
        return boardRepository.save(board);
    }

    //조회
    @GetMapping("/api/board")
    public List<Board> getBoards() {
        return boardRepository.findAllByOrderByModifiedAtDesc();
    }

    // 검색
    @GetMapping("/api/board/search")
    public List<Board> search(String keyword) {
        return boardRepository.findByTitleContainingOrContentContainingOrWriterContaining(keyword,keyword,keyword);
    }


}
public interface BoardRepository extends JpaRepository<Board, Long> {
    List<Board> findAllByOrderByModifiedAtDesc();
    List<Board> findByTitleContainingOrContentContainingOrWriterContaining(String title, String content,String writer);
   
}

 

이제 ARC로 테스트를 해보자!

 

GET요청으로 전체 게시글을 조회 하였다.

200! 굿굿!

POST요청으로 게시글을 작성하였다.

200! 굿굿!

GET요청으로 게시글 검색을 하였다.

200! 굿굿!

하지만!! 너무 순조로웠나..? 뭐가 문제지..?

2번째 검색부터는 에러가 발생하였다...!!!

java.lang.IllegalArgumentException: Parameter value [\] did not match expected type [java.lang.String (n/a)]

당황... 코드도 간단하고 검색하는거 뿐인데.. 왜 2번째 부터 에러가 나고 ㅈㄹ이야.. ㅠㅠ

 

별것도 아닌데 이거가지고 하루종일 씨름을 했다... 이것저것 건들려봐도 아무런 소용이 없었다..

 

구글링을 통해 단서를 찾았다! 아래의 링크를 참고!

https://github.com/spring-projects/spring-data-jpa/issues/2479

 

참고하여 댓글, 내용을 살펴보니!

Spring boot 업그레이드에서 버그가 있다고 한다!

like, contains, startWith같은 내용들도 동일한 오류가 발생했다는것을 알 수 있었다!!

 

해결책은!

public interface BoardRepository extends JpaRepository<Board, Long> {
    List<Board> findAllByOrderByModifiedAtDesc();
    List<Board> findByTitleContainingOrContentContainingOrWriterContaining(@Param("title") String title, @Param("content") String content, @Param("writer")String writer);
}

BoardRepository에서 각각의 매개변수에 @Param을 해주는 것이다!

 

다시ARC가서 테스트를 해봤다.!!

이제는 더이상 에러가 발생하지 않는다.. 너무 행복해...ㅠㅠ!!!

 

 

 

 

이문제에 있어서는 아래의 참고 URL참고하여 버그에 대한내용도 좀 더 자세히 한번 파악을 해봐야겠다!

 

 

 

 

 

 

 

 

 

 

 

참고자료

https://github.com/spring-projects/spring-data-jpa/issues/2479

https://github.com/spring-projects/spring-data-jpa/issues/2472

728x90
반응형
LIST