13

我的域对象 -

Person{
    String name;
    Date born;
}

我有一个 PersonRepository

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

我正在尝试获取在某个日期之后出生的所有人员。但这不起作用。我错过了什么?mongodb 控制台中“出生”的日期格式如下所示

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

我试图在 data-jpa 源中为此寻找单元/集成测试。找不到。有人可以指出我吗?

4

2 回答 2

11

因此,首先您必须确保不要将 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 版本修复了它。因此,您可能想要获取快照构建来尝试它。我还创建了一张票来添加BeforeAfter支持的关键字,以便比当前允许的更直观的LessThan使用GreaterThan

于 2011-11-18T08:55:06.653 回答
2

要么使用@Query注解,要么使用方法名中的关键词。我建议只使用方法名称中的关键词。这意味着可以删除此注释。意味着, List<Person> findByBornGreaterThan(Date born); 只会工作。您可以参考https://docs.spring.io/spring-data/mongodb/docs/1.2.0.RELEASE/reference/html/repositories.html以获得更多说明。

于 2018-11-08T08:00:05.243 回答