Skip to content

Commit 27f07a3

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 18e4e5a commit 27f07a3

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
@@ -311,6 +311,13 @@ public void findAllByQueryName() {
311311
assertThat(repository.findAllByNamedQuery()).hasSize(1);
312312
}
313313

314+
@Test // GH-1022
315+
public void findAllByCustomQueryName() {
316+
317+
repository.save(createDummyEntity());
318+
assertThat(repository.findAllByCustomNamedQuery()).hasSize(1);
319+
}
320+
314321
@Test // DATAJDBC-341
315322
public void findWithMissingQuery() {
316323

@@ -393,6 +400,8 @@ public void usePrimitiveArrayAsArgument() {
393400
interface DummyEntityRepository extends CrudRepository<DummyEntity, Long> {
394401

395402
List<DummyEntity> findAllByNamedQuery();
403+
@Query(name = "DummyEntity.customQuery")
404+
List<DummyEntity> findAllByCustomNamedQuery();
396405

397406
List<DummyEntity> findAllByPointInTimeAfter(Instant instant);
398407

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)