JPA로 구성된 레퍼지토리에서 @Query Annotation 을 사용하여 쿼리를 작성할 경우
매개변수로 null 이 넘어 오면 아래와 같이 null 조건이 검색된다.
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
@Query("SELECT m FROM Member m WHERE m.name = :name")
List<Member> findByName(String name);
// name 으로 null 이 넘어온경우 -> SELECT * FROM Member WHERE name = null
}
만약 null 로 매개변수가 올경우 무시하고 싶다면 아래와 같이 구성하면된다.
@Repository
public interface MemberRepository extends JpaRepository<Member, Long> {
@Query("SELECT m FROM Member m WHERE (:name is null or m.name = :name)")
List<Member> findByNameFilter(String name);
// name 이 null 인 경우 -> SELECT * FROM Member WHERE null is null or name = null; -> null is null 이 항상 참이므로 뒤에 조건은 보지 않는다
// name 이 null 이 아닌경우 -> SELECT * FROM Member WHERE '회원1' is null or name = '회원1';
}
참조: https://www.baeldung.com/spring-data-jpa-null-parameters
'게으른개발자 > 공부' 카테고리의 다른 글
JPA 를 사용하여 JSON 문자열을 객체에 매핑하기 (0) | 2021.12.14 |
---|---|
JPA 외래키로 복합키 만들기 (0) | 2021.11.22 |
JPA 외래키를 기본키로 사용하기 (0) | 2021.11.22 |
트랜잭션 (0) | 2021.04.17 |
Fluentd로 Kafka 전송하기 설정파일 및 SSL 적용 (0) | 2021.03.14 |