2016-04-01 8 views
1

Google Appengineを初めて使用しています。私のアプリケーションでは、データストアのエンティティはorg.joda.time.DateTimeオブジェクトを格納します。私は2つの特定のDateTimeの範囲の間にすべてのエンティティを返すようにデータストアを照会したい。このための私のコードは次のとおりです。objectifyのJodaTimeに基づいてフィルタリングする方法

@Entity 
@Cache 
@Index 
public class Sample { 

    @Id 
    Long id; // autogen 

    private DateTime dateTime; 
    private int activeCount; 
    private int inactiveCount; 
} 

私はに似たクエリたい -

Iterable<Sample> sampleIterable = ofy().load().type(Sample.class) 
        .filter("dateTime <", DateTime.now()) 
        .filter("dateTime >", DateTime.now().minusDays(1)) 
        .iterable(); 

は次のように日時を照会することが可能ですか? objectifyでDateTimeを問い合せる正しい方法は何でしょうか?私は明確さの欠如のために申し訳なく思っています。

+0

あなたのオブジェクト化サービス/工場にジョーダの日付翻訳者を登録しましたか?もしそうなら、正しいインデックスが存在すると仮定すれば、これはうまくいくはずです(この場合、 'dateTime'フィールドは@Indexとマークされています) – Nick

答えて

3

ObjectifyでJodaトランスレータを登録する場合は、DateTimeをフィールドとフィルタ句の両方として使用できます。 DateTimeを使用して、通常のDateプロパティに対してフィルタすることもできます。

JodaTimeTranslators.add(ObjectifyService.factory()); 

誰もがその後、依存関係としてジョダ時間を含める必要がありますので、これはデフォルトで有効になっていません。