2016-08-26 4 views
1

Spring 데이터 저장소의 메소드 이름이 실제로 길어질 수 있습니다. 예를 들어 :스프링 데이터 리파지토리 메소드 이름을 더 짧게 만들 수 있습니까?

@XX(key = "findByConfigAppIdAndConfigClusterNameAndConfigNamespaceNameAndDataChangeLastModifiedTimeAfter") 
List<InstanceConfig> customMethodName(String appId, String clusterName, 
     String namespaceName, Date validDate); 

는 이름 길이 문제에 대한 해결책이 있습니까 :

List<InstanceConfig> findByConfigAppIdAndConfigClusterNameAndConfigNamespaceNameAndDataChangeLastModifiedTimeAfter(
     String appId, String clusterName, 
     String namespaceName, Date validDate); 

을 나는 나에게 이런 일을 할 수 있도록하는 어떤 주석을 찾고 있어요?

+0

스프링 데이터의 가장 큰 장점은 SQL을 작성하지 않아도되기 때문에 @Query를 사용하고 싶지 않습니다. Java8 기본 문법은 내 문제를 해결할 수 있지만 매우 유익한 해결책은 아니라고 생각합니다. – lepdou

+0

어쩌면 질문을 다른 질문과 비교할 때 질문을 추가 할 수 있습니다.':) ' – albciff

+0

죄송합니다. 이것은 처음 질문을합니다 :-D – lepdou

답변

1

자바 (8)과 함께 당신은 default method을 만들 수 있고, 너무 길이 이름으로 메소드를 호출

List<InstanceConfig> findByConfigAppIdAndConfigClusterNameAndConfigNamespaceNameAndDataChangeLastModifiedTimeAfter(String appId, String clusterName, 
     String namespaceName, Date validDate); 

default List<InstanceConfig> customMethodName(String appId, String clusterName, 
     String namespaceName, Date validDate) { 
    return findByConfigAppIdAndConfigClusterNameAndConfigNamespaceNameAndDataChangeLastModifiedTimeAfter(appId,clusterName, 
    namespaceName, validDate); 
} 

을 그럼 당신은 당신이 findByConfigAppIdAndConfigClusterNameAndConfigNamespaceNameAndDataChangeLastModifiedTimeAfter를 호출로 customMethodName가 호출하는 경우.

+0

좋은 해결책입니다. 하지만 스프링 데이터가 단지 더 나은 해결책을 제안한 것처럼 기능을 제공한다면 Java 8 기능을 사용 하시겠습니까? 어쨌든 대단히 감사합니다! – lepdou

+0

그런 기능이 없습니다 ... 어쩌면 미래에는하지만 그렇게 생각하지 않습니다. IMHO 필요하지 않습니다 ... – Pau

+0

어쩌면. 하지만 코드 스타일에는 유익하지 않으며 저장소 클라이언트에는 우호적이지 않다고 생각합니다. 그것은 내 사람의 견해 일뿐입니다. :-디 – lepdou