⚠️ 스프링 부트 3.2.6(hibernate-core 6.4.8.Final)까지 findByPostId는 left join 후 where 절로 처리한다.⚠️ 스프링 부트 3.2.7(hibernate-core 6.4.9.Final)부터 findByPostId는 left join 없이 where 절로 처리한다.
Post와 Comment가 1:N 관계일 때, findByPost와 findByPostId의 쿼리가 동일할 것으로 기대된다.
하지만 findByPostId는 left join 후 where 절로 처리하고, findByPost는 where 절로 처리한다.
다음의 이미지를 참고하자.
그 이유는 무엇일까?
findByXXXId는 XXX_id라는 외래 키를 가지고 조회하는 것이 아닌, XXX의 식별자를 가지고 조회하는 것이다.
따라서 findByXXXId는 left join 후 where 절로 처리한다.
공식 문서에 따르면 쿼리 메서드 기능은 메서드 네이밍을 분석할 때 엔티티의 프로퍼티, 즉 필드만 참조할 수 있다고 되어 있다.