[SPRING] 스프링 데이터 - null 값을 가진 경우 매개 변수를 무시합니다.
SPRING스프링 데이터 - null 값을 가진 경우 매개 변수를 무시합니다.
두 개의 매개 변수를 사용하는 스프링 데이터 저장소 인터페이스가 필요합니다. 다음과 같은 행동을하게하는 방법이 있습니까?
MyObject findByParameterOneAndParameterTwo( String parameterOne, String parameterTwo);
두 매개 변수에 값이 있으면 정상적으로 작동하고 두 값 모두에 대해 "AND"를 수행하고 싶습니다.
예를 들어 두 번째 매개 변수가 null 인 경우 ParameterOne 만 검색합니다.
어떤 제안?
해결법
-
==============================
1.저장소 메소드의 이름을 지정하는 것이 가능하지 않을지 모르지만 @Query를 사용할 수 있습니다.
저장소 메소드의 이름을 지정하는 것이 가능하지 않을지 모르지만 @Query를 사용할 수 있습니다.
(:parameterOne is null or parameter1 = :parameterOne) and (:parameterTwo is null or parameter2 = :parameterTwo)
-
==============================
2.현재 Spring-data-jpa에서는 이것이 불가능합니다.
현재 Spring-data-jpa에서는 이것이 불가능합니다.
JIRA 티켓에 관해서는 Spring 팀의 조사 중입니다.
그러나 해결 방법을 원한다면 간단한 기준 쿼리 예제를 체크 아웃 할 수 있습니다.
-
==============================
3.별도의 클래스로 Repo를 사용할 수 있는지 확실하지 않지만 StringBuilder를 사용하여 옵션 매개 변수로 쿼리를 추가 할 수 있습니다. 이것은 확실히 작동 할 것이다.
별도의 클래스로 Repo를 사용할 수 있는지 확실하지 않지만 StringBuilder를 사용하여 옵션 매개 변수로 쿼리를 추가 할 수 있습니다. 이것은 확실히 작동 할 것이다.
StringBuilder queryBuilder = new StringBuilder(); queryBuilder.append("select p.name from personDemographic p "); Boolean flag = true; if(parameterOne != null){ if(flag){ queryBuilder.append("where condition..."); flag=false; } } if(parameterOne != null){ if(flag){ queryBuilder.append("where condition..."); flag = false; }else{ queryBuilder.append("and condition..."); } Query query = entityManager.createQuery(queryBuilder.toString());
from https://stackoverflow.com/questions/43780226/spring-data-ignore-parameter-if-it-has-a-null-value by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 데이터 REST : 컨트롤러에서 리파지토리 메서드 재정의 (0) | 2019.01.04 |
---|---|
[SPRING] URL 매핑 문제 - Spring 웹 MVC (0) | 2019.01.04 |
[SPRING] 스프링 스케줄링 작업 - 한 번만 실행 (0) | 2019.01.03 |
[SPRING] Spring 설정 내의 조건문 (0) | 2019.01.03 |
[SPRING] @PostConstruct 메서드는 Spring에서 호출되지 않습니다. (0) | 2019.01.03 |