클라이언트는 param
중 하나만 제출하면됩니다.클라이언트에게 잘못된 매개 변수를 전달하는 매개 변수를 전달하고 있습니까?
매개 변수가 firstName
또는 middleName
또는 lastName
과 일치하는 레코드를 검색해야합니다.
이
는 스프링 프로젝트이며,이 같은 봄의 데이터를 활용하여이 방법을 썼다findByFirstNameOrMiddleNameOrLastName(param, param, param);
:
List<Record> findByFirstNameOrMiddleNameOrLastName(String fn, String mn, String ln);
그리고 서비스 계층에서, 나는대로 중복 된 매개 변수를 전달하여이 메서드를 호출하고
내가 이것을 할 때, 메소드에 세 개의 다른 인수를 전달하면 같은 변수를 디자인 재검토가 필요하다는 검토 주석이 있습니다.
나는 동일한 정보를 한 번 이상 메서드에 전달하는 것이 좋지 않다고 상기 한 내용을 이해합니다. 는 또한 동일 하나 PARAM을 가지고이 같은 문제를 해결할 수 @Query
주석을 사용하여 작성 될 수 있다는 것을 이해 (이 너무 검토에 의해 제안되는 것입니다) :
@Query("{$or : [{ 'firstName' : ?0 }, { 'middleName' : ?0 }, { 'lastName' : ?0 }] }")
List<Record> findByFirstNameOrMiddleNameOrLastName(String n);
하지만 내 지점을 여기에 마찬가지로
findByFirstNameOrMiddleNameOrLastName(fParam, mParam, lParam);
을 : 나는 다른 서비스 계층 실제로 다른 PARAMS로 검색 할 경우, 그들은 단지 같은 다른 값을 전달하여 같은 방법을 사용할 수 있도록 동네 짱의 방법으로 그것을 생각이 방법을 도입한다 다른 조합은 다른 입력 조합을 메서드에 전달하는 것만으로도 사용할 수 있습니다.
내가 여기 순진 수 있습니다,하지만 난이 방법의 장점을 참조하십시오 전원이 클라이언트 코드에 주어진대로,이 같은 방법은 요구를 반환하여 다른 쿼리와 방법을 결정 자신의 입력 그대로 결과 집합.
@Query
접근 방식을 사용하고 다른 서비스 계층에서 서로 다른 세 개 또는 두 개의 매개 변수로 쿼리해야하는 경우이를 수행하기 위해 여러 가지 방법을 사용해야합니다. 내 질문에해야 할 일은 다음과 같습니다.
새 쌍 쿼리 요구 사항이 발생할 때마다 중복 매개 변수를 전달하지 않아야하므로 새 메서드를 작성하거나 클라이언트 코드에 컨트롤을 제공하여 원하는대로 전달해야합니다 (심지어 복제) 하나의 일반적인 방법을 가지고?
업데이트 : 이제 우리는 하나 개의 인수 솔루션 갔을를 들어
. 다음과 같음 :
그래도 나는 그것에 대해 토론하고 제안 할 것이 열려있다.
나는이 질문을 중재자주의 사항에 표시하여 codereview.stackexchange로 이동하도록 요청했습니다.com
필요한 경우 동일한 값을 기반으로 검색하는 방법입니다. 구현할 필요가있는 것입니다. 3 매개 변수 솔루션은 현재 존재하는 문제를 해결하지 않으며 결코 존재할 수 없습니다. 그래서 나는 개인적으로 당신의 평론가와 동의 할 것이고,이 질문은 의견을 바탕으로 한 것이고이 사이트에 좋지는 않다. https://codereview.stackexchange.com/가 그것을위한 적당한 장소 일 수있다. – Oleg