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

我的域对象 -

Person{
    String name;
    Date born;
}

我有一个人存储库

PersonRepository{
    @Query(value="{'born': {$gt: new Date(?0)} }")
    findPerson(Date bornAfter);
}

我试图获取所有在特定日期之后出生的人。但是这不起作用。我错过了什么?mongodb控制台中“出生”的日期格式看起来像

ISODate("2011-11-16T09:46:33.750Z")

我试图在data-jpa源代码中寻找一个单元/集成测试。找不到任何。有人可以指给我看吗?


答案 1

因此,首先,您必须确保不要在这里将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,我已经为此创建了一个票证,并且已经为即将推出的版本1.0.2.RELEASE和1.1.0.M1修复了它。因此,您可能需要获取快照构建版本来尝试一下。我还创建了一个票证来添加和添加到支持的关键字,以便比目前允许的更直观地使用。BeforeAfterLessThanGreaterThan


答案 2

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