DATACMNS-939 - Do not create queries for static interface methods.

We now no longer attempt query creation for static methods declared on a repository interface. This allows static method usage inside of repository interfaces.

interface PersonRepository extends CrudRepository<Person, String> {

    static String createId() {
        // …
    }

    default Person findPerson() {
        return findOne(createId());
    }
}
This commit is contained in:
Mark Paluch
2016-11-21 09:15:16 +01:00
committed by Oliver Gierke
parent 8d7752a96b
commit ed11c9dbd7

View File

@@ -22,6 +22,7 @@ import static org.springframework.util.ReflectionUtils.*;
import java.io.Serializable;
import java.lang.reflect.GenericDeclaration;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
import java.util.Collections;
@@ -185,6 +186,7 @@ class DefaultRepositoryInformation implements RepositoryInformation {
*/
private boolean isQueryMethodCandidate(Method method) {
return !method.isBridge() && !ReflectionUtils.isDefaultMethod(method) //
&& !Modifier.isStatic(method.getModifiers()) //
&& (isQueryAnnotationPresentOn(method) || !isCustomMethod(method) && !isBaseClassMethod(method));
}