2013-04-24 112 views
2

彈簧數據的MongoDB 1.1.2發佈(Spring的數據共同核心1.4.1.Released)彈簧數據@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()函數。

有沒有人遇到過這個問題,並可以告訴我我做錯了什麼,或者如果這是一個已知的問題?我將在Spring數據項目中打開一個JIRA。

回答

2

我想你是摔倒了this one。這已在發佈here的發佈中得到修復。你應該看到這個工作是通過升級到Spring Data MongoDB 1.2.1(它可以傳遞Spring Data Commons 1.5.1)。