쌓고 쌓다
JPA의 FindBy와 FindAllBy 차이점! (+NonUnique) 본문
게시글을 통해 해당 게시글의 댓글들을 모두 가져오는 코드가 필요했다.
findAllByBoard 과 findByBoard를 쓸 수 있는데
findByBoard의 결과가 둘 이상이면 어떻게 반환하는지 궁금했고.
반환값을 List가 아닌 Comment로 단일 결과를 반환하도록 했지만 findBy 결과가 여러건인 경우 어떻게 되는지 궁금증이 발생했다.
@Repository
public interface CommentRepository extends JpaRepository<Comment, Integer> {
List<Comment> findAllByBoard(Board board);
List<Comment> findByBoard(Board board);
}
먼저 반환값을 List로하고 findAllBy와 findBy의 차이점을 보자.
결과는 동일하다.
즉, findBy와 findAllBy의 반환값이 List라면 결과는 동일하다.
이제 findBy와 findAllBy의 반환값을 단일값으로 해보자.
결과는 단일값이 아닌 상황이다.
즉, Repository에는 다음과 같이 작성한다.
Comment findAllByBoard(Board board);
Comment findByBoard(Board board);
모두 unique한 결과를 예상했지만 NonUnique해서 예외가 터져버린다.
'프로그래밍 > JPA' 카테고리의 다른 글
JPA(hibernate) INSERT, UPDATE, DELETE 순서 주의사항 (1) | 2024.02.24 |
---|---|
JPA findBy로 특정 범위내 숫자 컬럼 검색하는법 (0) | 2023.12.26 |
JPA로 INSERT할때 MySQL 테이블 DEFAULT 값 넣기 (2) | 2023.11.20 |
JPA find 후 엔티티 변경시 UPDATE가 안날라갈때 with Transaction (0) | 2023.11.10 |
JPA에서 save시 SELECT 쿼리 실행 (1) | 2023.09.11 |
Comments