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();