diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/Meta.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/Meta.java index 3b90056dc..e64a6f25a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/Meta.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/Meta.java @@ -21,14 +21,8 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import org.springframework.data.annotation.QueryAnnotation; - /** * Annotation to declare meta-information (execution time, cursor size, disk usage) for query methods. - *

- * Annotating a repository method with this annotation forces the method to be implemented as query method (i.e. using - * this annotation on an overridden method from a base interface or fragment interface), similar to using - * {@link Query @Query}. * * @author Christoph Strobl * @author Mark Paluch @@ -37,7 +31,6 @@ import org.springframework.data.annotation.QueryAnnotation; @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.METHOD, ElementType.ANNOTATION_TYPE }) @Documented -@QueryAnnotation public @interface Meta { /** diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java index a9f694e20..dc1dbe2a9 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/PersonRepository.java @@ -63,6 +63,7 @@ public interface PersonRepository extends MongoRepository, Query * @param lastname * @return */ + @Meta List findByLastname(String lastname); List findByLastnameStartsWith(String prefix); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/PartTreeMongoQueryUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/PartTreeMongoQueryUnitTests.java index 07c10592d..d88fc75fa 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/PartTreeMongoQueryUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/query/PartTreeMongoQueryUnitTests.java @@ -38,6 +38,7 @@ import org.springframework.data.mongodb.core.convert.MongoConverter; import org.springframework.data.mongodb.core.convert.NoOpDbRefResolver; import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.core.query.TextCriteria; +import org.springframework.data.mongodb.repository.Meta; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.data.mongodb.repository.Person; import org.springframework.data.mongodb.repository.Person.Sex; @@ -127,6 +128,12 @@ class PartTreeMongoQueryUnitTests { assertThat(deriveQueryFromMethod("findPersonBy", new Object[0]).getFieldsObject()).isEmpty(); } + @Test // GH-4852 + void appliesMetaToPartTreeQuery() { + assertThat(deriveQueryFromMethod("findPersonBy", new Object[0]).getMeta() + .getMaxTimeMsec()).isEqualTo(1234L); + } + @Test // DATAMONGO-1345 void restrictsQueryToFieldsRequiredForProjection() { @@ -193,7 +200,10 @@ class PartTreeMongoQueryUnitTests { PartTreeMongoQuery partTreeQuery = createQueryForMethod(method, types); MongoParameterAccessor accessor = new MongoParametersParameterAccessor(partTreeQuery.getQueryMethod(), args); - return partTreeQuery.createQuery(new ConvertingParameterAccessor(mongoOperationsMock.getConverter(), accessor)); + + org.springframework.data.mongodb.core.query.Query query = partTreeQuery.createQuery(new ConvertingParameterAccessor(mongoOperationsMock.getConverter(), accessor)); + partTreeQuery.applyQueryMetaAttributesWhenPresent(query); + return query; } private PartTreeMongoQuery createQueryForMethod(String methodName, Class... paramTypes) { @@ -230,6 +240,7 @@ class PartTreeMongoQueryUnitTests { @Query(fields = "{ 'firstname }") Person findByAge(Integer age); + @Meta(maxExecutionTimeMs = 1234) Person findPersonBy(); PersonProjection findPersonProjectedBy();