【发布时间】:2016-04-18 16:41:18
【问题描述】:
我已经配置了一个 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!");
Spring Data MongoDB latest documentation (1.8.4.RELEASE) 表示 NotLike 是受支持的查询关键字。但在实现中似乎缺少它。
这里有什么遗漏或者我应该提出一个错误修复吗?
【问题讨论】:
-
你需要发布更多的源代码,我没有看到查询语句。
-
我正在使用 spring-data-mongodb 存储库,无需查询!存储库正在扩展 MongoRepository - 它负责一切。
-
findByFirstNameNotLike不受支持。让我们看看表6.1。查询方法支持的关键字docs.spring.io/spring-data/mongodb/docs/1.2.x/reference/html/…或尝试使用普通查询。 -
您正在查看旧版本。我正在使用 1.8.4.RELEASE(最新版本)
-
让我们看看docs.spring.io/spring-data/mongodb/docs/1.8.4.RELEASE/reference/… 中的表3. 查询方法支持的关键字。我还没有看到关键字
notLike。最新版本是1.9.1.RELEASEdocs.spring.io/spring-data/mongodb/docs/current/reference/html
标签: java spring mongodb spring-data spring-data-mongodb