我的域名对象 -
Person{
String name;
Date born;
}
我有一个PersonRepository
PersonRepository{
@Query(value="{'born': {$gt: new Date(?0)} }")
findPerson(Date bornAfter);
}
我正在尝试取出在某个日期之后出生的所有人。但这不起作用。我错过了什么? mongodb控制台中“born”的日期格式类似于
ISODate("2011-11-16T09:46:33.750Z")
我试图在data-jpa源代码中寻找单元/集成测试。找不到任何东西。有人能指出我吗?
答案 0 :(得分:9)
首先,您必须确保不要在此处将Spring Data JPA与Spring Data MongoDB混淆。我不认为问题的任何部分实际上是针对一些JPA的东西。以下是您的存储库的外观:
public interface PersonRepository extends Repository<Person, Long> {
// Query generated from the method name
List<Person> findByBornGreaterThan(Date born);
@Query("{'born' : { '$gt' : ?0 }}")
List<Person> findPersons(Date born);
}
后者不适用于1.0.1.RELEASE,我为此创建了一个ticket,并且已经针对即将发布的版本1.0.2.RELEASE和1.1.0.M1修复了它。所以你可能想抓住一个快照构建来试试它。我还创建了一个ticket来添加Before
和After
到支持的关键字,以便比LessThan
和GreaterThan
目前允许的更直观地使用。
答案 1 :(得分:0)
使用@Query
批注或在方法名称中使用关键字。我建议只使用方法名称中的关键字。这意味着可以删除此注释。手段,
List<Person> findByBornGreaterThan(Date born);
只会工作。您可以参考https://docs.spring.io/spring-data/mongodb/docs/1.2.0.RELEASE/reference/html/repositories.html进行详细说明。