GAE + GWT プログラミングメモ

Google App Engine とGoogle Web Toolkit のメモ

条件を指定してDatastoreから情報を取得する

Datastoreにキー名"http://otanews.livedoor.biz/"、
"title"プロパティ"萌えオタニュース速報"のEntityを登録した状況のとき、
"title"を指定して、Entityを取得する。

Entity entity = new Entity("blog", "http://otanews.livedoor.biz/");
entity.setProperty("title", "萌えオタニュース速報");
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
ds.put(entity);

Entityを取得するときに条件を指定するためにはQueryとFilterを用いる。
QueryはKind名を引数にインスタンス化する。
queryのsetFilterメソッドにプロパティの条件を指定する。
今回の場合は、"title"プロパティが"萌えオタニュース速報"のEntityを取得したいので、
FilterOperator.EQUALを用いる。
後は、queryをDatastoreServiceのprepareの引数にいれ、PreparedQueryにしてから、asQueryResultListメソッドで結果をQueryResultListとして得る。
PreparedQueryにはasListやasIteratorメソッドもあるが情報量はasQueryResultListが一番多い。(Cursor情報を持っている)
asQueryResultListの引数にFetchOptionsを指定する必要があるが、数の上限やCursorの指定がない場合は、FetchOptions.Builder.withDefaults()でよい。

Query query = new Query("blog");
query.setFilter(new FilterPredicate("title", FilterOperator.EQUAL, "萌えオタニュース速報"));
DatastoreService ds = DatastoreServiceFactory.getDatastoreService();
QueryResultList<Entity> entityList = ds.prepare(query).asQueryResultList(FetchOptions.Builder.withDefaults());


作成中のアニメ特化アンテナサイト
http://kumo2ji.appspot.com/