0

我有一个 CustomPojo,其中有一个日期字段(testDate)。现在我想根据该日期字段的日期范围搜索这个 CustomPojo。我试图通过以下方式实现它,但不幸的是它不是过滤数据而是返回所有 pojo。请有任何建议。

*PojoRepository<CustomPojo, Long> customPojoRepo= getDbClient()
            .newPojoRepository(CustomPojo.class, Long.class);
PojoQueryBuilder<CustomPojo> qb = customPojoRepo.getQueryBuilder();
StructuredQueryDefinition sqdef=
             qb.and(qb.range("testDate", PojoQueryBuilder.Operator.GE, startCal.getTime()),
             qb.range("testDate", PojoQueryBuilder.Operator.LE, endCal.getTime()));
PojoPage<CustomPojo> matchingObjs =
customPojoRepo.search(sqdef,
                    start);*

谢谢,贾根

4

2 回答 2

0

您能否发布 CustomPojo 的定义,以及存储在数据库中的 JSON 文档示例。PojoRepository 的定义(如文档所述)旨在用于简单的 CRUD 方法,特别是从 Pojo 到 JSON 的确切序列化(数据映射)是未定义的。使用查询,您需要知道字段的序列化名称,因为 ML 对 java 一无所知。还键入了范围索引,没有范围索引的定义、Pojo、JSON 和 endCal.getTime() 无法确定您遇到的最有可能的问题。

于 2018-01-29T11:45:36.843 回答
0

我知道这不能直接回答您的问题,但请注意,在PojoFacadeTest.java中有一个使用TimeTest作为 Pojo的日期范围查询的工作示例。为了支持这个bootstrap.xqy作为单元测试的先决条件运行)创建了三个 dateTime 范围索引:

  • com.marklogic.client.test.TimeTest/calendarTest
  • com.marklogic.client.test.TimeTest/calendarTestCet
  • com.marklogic.client.test.TimeTest/dateTest
于 2018-01-29T16:18:12.683 回答