如何在appengine数据存储区中的两个日期之间获取实体

时间:2013-02-08 22:59:19

标签: java google-app-engine jpa datastore

我有一张约会表,其中约会日期为其中一列。我想使用JPA检索appengine数据存储区中两个日期之间的所有约会。可以请让我知道如何实现这一目标?我尝试了以下查询,但它没有用。

从约会中选择一个位置(apptSts ='p'或apptSts ='a')和(apptDate> =:fromDate或apptDate< =:toDate)

4 个答案:

答案 0 :(得分:3)

将属性设为列表属性。然后您可以在两个日期之间查询。 请参阅Objectify中完成的以下测试代码。我想你也可以在JPA中使用相同的技术。 https://github.com/stickfigure/objectify/blob/master/src/test/java/com/googlecode/objectify/test/QueryExoticTypesTests.java

答案 1 :(得分:3)

要检索两个日期之间的约会,您需要更改查询逻辑以包含“”而不是“”:

select a from Appointment
where apptDate>=fromDate and apptDate<=toDate

您可以在appengine的同一属性上使用不等号文件管理器,但它们不能与OR结合使用。

请参阅gql reference中的示例,该示例也适用于JPA。

答案 2 :(得分:0)

你可以应用多个不等式,但它们应该在同一个字段(变量)。我想这里出现的问题是app引擎不允许使用括号的东西,,,我的意思是

(conditionA AND conditionB .....) OR (conditionC AND conditionC .....)
//--this is not allowed.

允许以下方式(我试过)

(conditionA AND conditionB .....) AND (conditionC AND conditionC)
//--allowed(although its bracket are meaning less here)

答案 3 :(得分:-2)

您只能执行大于或小于查询的一个,因此一种方法是执行大于查询,并遍历结果并手动过滤掉与小于查询不匹配的结果。