Выпущен Spring-data-mongodb 1.1.2 (Spring-data-common-core 1.4.1.Выпущен)
У меня возникли проблемы с использованием аннотации @Query с интерфейсом. Например, если у меня определен следующий интерфейс:
public interface Person {
String getName();
Integer getAge();
}
и следующий репозиторий определен:
public interface PersonRepository extends MongoRepository<Person, String> {
@Query(value="{ 'name': ?0}")
List<Person> findPeople(String name);
}
Я получаю следующее исключение при попытке запроса:
java.lang.IllegalArgumentException: No property name found on com.abc.People!
at org.springframework.data.mapping.context.AbstractMappingContext.getPersistentPropertyPath(AbstractMappingContext.java:225)
at org.springframework.data.mongodb.core.convert.QueryMapper.getPath(QueryMapper.java:202)
at org.springframework.data.mongodb.core.convert.QueryMapper.getTargetProperty(QueryMapper.java:190)
at org.springframework.data.mongodb.core.convert.QueryMapper.getMappedObject(QueryMapper.java:86)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1336)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1322)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:495)
at org.springframework.data.mongodb.repository.query.AbstractMongoQuery$Execution.readCollection(AbstractMongoQuery.java:123)
Это исключение не возникает, если мой @Query обновлен до:
public interface PersonRepository extends MongoRepository<Person, String> {
@Query(value="{ 'abcd': ?0}")
List<Person> findPeople(String name);
}
Этого также не происходит, если я удаляю функцию getName() из интерфейса.
Кто-нибудь сталкивался с этой проблемой и может сказать мне, что я делаю неправильно, или это известная проблема? Я открою проект JIRA in Spring-data.