我已将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是受支持的查询关键字。但在实施过程中似乎缺失了。
这里是否有任何遗漏或我应该提出错误修复?
答案 0 :(得分:1)
当前(1.9.1)Spring Data MongoDB版本仍然不支持Spring Data MongoDB最新文档(1.8.4.RELEASE)说NotLike 是受支持的查询关键字。但似乎缺少了 实施
NotLike - 请参阅Table 5. Supported keywords for query methods。
这里是否有任何遗漏或我应该提出错误修复?
不是错误修复,因为运行时错误与不受支持的关键字一致,但您可以在Spring Data MongoDB JIRA上打开功能请求。
同时,为了让代码运行,您可以使用Query注释甚至Querydsl实现自己的 findByFirstNameNotLike 方法more complex queries