diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryMethod.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryMethod.java index 73f8db2fb..d5799181f 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryMethod.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryMethod.java @@ -147,21 +147,16 @@ public class JdbcQueryMethod extends QueryMethod { @Nullable private String getNamedQuery() { - String name = getQueryName(); + String name = getNamedQueryName(); return this.namedQueries.hasQuery(name) ? this.namedQueries.getQuery(name) : null; } - /** - * Returns the annotated query name. - * - * @return May be {@code null}. - */ - - private String getQueryName() { + @Override + public String getNamedQueryName() { String annotatedName = getMergedAnnotationAttribute("name"); - return StringUtils.hasText(annotatedName) ? annotatedName : getNamedQueryName(); + return StringUtils.hasText(annotatedName) ? annotatedName : super.getNamedQueryName(); } /** @@ -174,7 +169,6 @@ public class JdbcQueryMethod extends QueryMethod { return getMergedAnnotationAttribute("rowMapperClass"); } - /** * Returns the name of the bean to be used as {@link org.springframework.jdbc.core.RowMapper} * @@ -225,24 +219,11 @@ public class JdbcQueryMethod extends QueryMethod { /** * Returns whether the method has an annotated query. - * - * @return */ public boolean hasAnnotatedQuery() { return findAnnotatedQuery().isPresent(); } - /** - * Returns the query string declared in a {@link Query} annotation or {@literal null} if neither the annotation found - * nor the attribute was specified. - * - * @return - */ - @Nullable - String getAnnotatedQuery() { - return findAnnotatedQuery().orElse(null); - } - private Optional findAnnotatedQuery() { return lookupQueryAnnotation() // diff --git a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java index 872e3e46f..7416f18ae 100644 --- a/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java +++ b/spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java @@ -311,6 +311,13 @@ public class JdbcRepositoryIntegrationTests { assertThat(repository.findAllByNamedQuery()).hasSize(1); } + @Test // GH-1022 + public void findAllByCustomQueryName() { + + repository.save(createDummyEntity()); + assertThat(repository.findAllByCustomNamedQuery()).hasSize(1); + } + @Test // DATAJDBC-341 public void findWithMissingQuery() { @@ -393,6 +400,8 @@ public class JdbcRepositoryIntegrationTests { interface DummyEntityRepository extends CrudRepository { List findAllByNamedQuery(); + @Query(name = "DummyEntity.customQuery") + List findAllByCustomNamedQuery(); List findAllByPointInTimeAfter(Instant instant); diff --git a/spring-data-jdbc/src/test/resources/META-INF/jdbc-named-queries.properties b/spring-data-jdbc/src/test/resources/META-INF/jdbc-named-queries.properties index 6d47e5853..217ad9e1a 100644 --- a/spring-data-jdbc/src/test/resources/META-INF/jdbc-named-queries.properties +++ b/spring-data-jdbc/src/test/resources/META-INF/jdbc-named-queries.properties @@ -1 +1,2 @@ -DummyEntity.findAllByNamedQuery=SELECT * FROM DUMMY_ENTITY \ No newline at end of file +DummyEntity.findAllByNamedQuery=SELECT * FROM DUMMY_ENTITY +DummyEntity.customQuery=SELECT * FROM DUMMY_ENTITY \ No newline at end of file