Spring Data MongoDB NotLike - 不支持的关键字

时间:2016-04-16 10:02:13

标签: java spring mongodb spring-data spring-data-mongodb

我已将Spring Data Repository(mongoDB)和Author实体配置如下:

Repository :
   public interface AuthorRepository extends MongoRepository< Author, Long > {
        Iterable<Author> findByFirstName( String personName );
        Iterable<Author> findByFirstNameLike( String personName );
        Iterable<Author> findByFirstNameNotLike( String firstName );
    }
Entity Class :   
    @Document( collection = "author" )
    @Data
    public class Author {
        @Id
        private String          id;

        private String          firstName;

      //..
    }

我能够运行前两个查询而没有任何错误。但是“NotLike”方法让我遇到了运行时错误:

Caused by: java.lang.IllegalArgumentException: Unsupported keyword!
    at org.springframework.data.mongodb.repository.query.MongoQueryCreator.from(MongoQueryCreator.java:252) ~[spring-data-mongodb-1.8.4.RELEASE.jar:na]
    at org.springframework.data.mongodb.repository.query.MongoQueryCreator.create(MongoQueryCreator.java:114) ~[spring-data-mongodb-1.8.4.RELEASE.jar:na]
    at org.springframework.data.mongodb.repository.query.MongoQueryCreator.create(MongoQueryCreator.java:58) ~[spring-data-mongodb-1.8.4.RELEASE.jar:na]
    ...

我查看了MongoQueryCreator.from(MongoQueryCreator.java:252),发现Part.Type.NOT_LIKE未在switch-case语句处理IllegalArgumentException("Unsupported keyword!");并且正在投掷{{1}}

Spring Data MongoDB latest documentation (1.8.4.RELEASE)表示NotLike是受支持的查询关键字。但在实施过程中似乎缺失了。

这里是否有任何遗漏或我应该提出错误修复?

1 个答案:

答案 0 :(得分:1)

  

Spring Data MongoDB最新文档(1.8.4.RELEASE)说NotLike   是受支持的查询关键字。但似乎缺少了   实施

当前(1.9.1)Spring Data MongoDB版本仍然不支持

NotLike - 请参阅Table 5. Supported keywords for query methods

  

这里是否有任何遗漏或我应该提出错误修复?

不是错误修复,因为运行时错误与不受支持的关键字一致,但您可以在Spring Data MongoDB JIRA上打开功能请求。

同时,为了让代码运行,您可以使用Query注释甚至Querydsl实现自己的 findByFirstNameNotLike 方法more complex queries