Skip to content

Commit cc6859b

Browse files
schaudermp911de
authored andcommitted
Fixes annotated named queries.
@Query.name wasn't considered when trying to find a named query for a query method. Closes #1022 Original pull request: #1039.
1 parent 660a44e commit cc6859b

File tree

3 files changed

+15
-24
lines changed

3 files changed

+15
-24
lines changed

spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/JdbcQueryMethod.java

+4-23
Original file line numberDiff line numberDiff line change
@@ -147,21 +147,16 @@ private String getQueryValue() {
147147
@Nullable
148148
private String getNamedQuery() {
149149

150-
String name = getQueryName();
150+
String name = getNamedQueryName();
151151
return this.namedQueries.hasQuery(name) ? this.namedQueries.getQuery(name) : null;
152152
}
153153

154-
/**
155-
* Returns the annotated query name.
156-
*
157-
* @return May be {@code null}.
158-
*/
159-
160-
private String getQueryName() {
154+
@Override
155+
public String getNamedQueryName() {
161156

162157
String annotatedName = getMergedAnnotationAttribute("name");
163158

164-
return StringUtils.hasText(annotatedName) ? annotatedName : getNamedQueryName();
159+
return StringUtils.hasText(annotatedName) ? annotatedName : super.getNamedQueryName();
165160
}
166161

167162
/**
@@ -174,7 +169,6 @@ Class<? extends RowMapper> getRowMapperClass() {
174169
return getMergedAnnotationAttribute("rowMapperClass");
175170
}
176171

177-
178172
/**
179173
* Returns the name of the bean to be used as {@link org.springframework.jdbc.core.RowMapper}
180174
*
@@ -225,24 +219,11 @@ private <T> T getMergedAnnotationAttribute(String attribute) {
225219

226220
/**
227221
* Returns whether the method has an annotated query.
228-
*
229-
* @return
230222
*/
231223
public boolean hasAnnotatedQuery() {
232224
return findAnnotatedQuery().isPresent();
233225
}
234226

235-
/**
236-
* Returns the query string declared in a {@link Query} annotation or {@literal null} if neither the annotation found
237-
* nor the attribute was specified.
238-
*
239-
* @return
240-
*/
241-
@Nullable
242-
String getAnnotatedQuery() {
243-
return findAnnotatedQuery().orElse(null);
244-
}
245-
246227
private Optional<String> findAnnotatedQuery() {
247228

248229
return lookupQueryAnnotation() //

spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java

+9
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,13 @@ public void findAllByQueryName() {
330330
assertThat(repository.findAllByNamedQuery()).hasSize(1);
331331
}
332332

333+
@Test // GH-1022
334+
public void findAllByCustomQueryName() {
335+
336+
repository.save(createDummyEntity());
337+
assertThat(repository.findAllByCustomNamedQuery()).hasSize(1);
338+
}
339+
333340
@Test // DATAJDBC-341
334341
public void findWithMissingQuery() {
335342

@@ -567,6 +574,8 @@ private Instant createDummyBeforeAndAfterNow() {
567574
interface DummyEntityRepository extends CrudRepository<DummyEntity, Long> {
568575

569576
List<DummyEntity> findAllByNamedQuery();
577+
@Query(name = "DummyEntity.customQuery")
578+
List<DummyEntity> findAllByCustomNamedQuery();
570579

571580
List<DummyEntity> findAllByPointInTimeAfter(Instant instant);
572581

Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
DummyEntity.findAllByNamedQuery=SELECT * FROM DUMMY_ENTITY
1+
DummyEntity.findAllByNamedQuery=SELECT * FROM DUMMY_ENTITY
2+
DummyEntity.customQuery=SELECT * FROM DUMMY_ENTITY

0 commit comments

Comments
 (0)