如何在Spring Data MongoDB存储库中查询日期?

时间:2011-11-18 08:16:39

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

我的域名对象 -

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源代码中寻找单元/集成测试。找不到任何东西。有人能指出我吗?

2 个答案:

答案 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来添加BeforeAfter到支持的关键字,以便比LessThanGreaterThan目前允许的更直观地使用。

答案 1 :(得分:0)

使用@Query批注或在方法名称中使用关键字。我建议只使用方法名称中的关键字。这意味着可以删除此注释。手段, List<Person> findByBornGreaterThan(Date born); 只会工作。您可以参考https://docs.spring.io/spring-data/mongodb/docs/1.2.0.RELEASE/reference/html/repositories.html进行详细说明。