Аннотация и интерфейс Spring-data @Query

Выпущен 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.


person ltfishie    schedule 24.04.2013    source источник


Ответы (1)


Я думаю, вы спотыкаетесь на этом. Это было исправлено в выпуске, анонсированном здесь. Вы должны увидеть, как это работает, обновив до Spring Data MongoDB 1.2.1 (который транзитивно использует Spring Data Commons 1.5.1).

person Oliver Drotbohm    schedule 25.04.2013