2012-03-22 20 views
2

私はデータストアのクエリを作成しようとしています。Google DataStore - ID /名前でデータを取得する方法

DataStoreが自動的に一意の「ID/Name」を各行に割り当てていることがわかりました。特定の「ID/Name」を持つ行からデータをフェッチしたかったのです。

enter image description here

私は次のことをやっているが、それは働いていない:私は間違っ

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
Query query = new Query("ListOfMessages"); 
query.addFilter("**ID/Name**", Query.FilterOperator.EQUAL, message_id); 
List<Entity> users = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(1)); 
for (Entity user : users) 
{ 
    message=(String) user.getProperty("smil_message"); 
} 
System.out.println("message"+message); 

何をしているのですか?

答えて

2

最良の方法は、代わりにクエリのgetである:

datastoreService.get(KeyFactory.createKey("ListOfMessages", message_id)); 

照会しなければならない場合は、プロパティ名が__key__であり、あなたが完全に構築キーだけではなく、MESSAGE_IDにフィルタリングする必要があります。

query.addFilter("__key__", Query.FilterOperator.EQUAL, KeyFactory.createKey("ListOfMessages", message_id)); 
+0

取得できませんでした。これは私がやったことです:\t \t \tエンティティe = datastore.get(KeyFactory.createKey( "ListOfMessages"、message_id)); String mes =(String)e.getProperty( "smil_message"); ------受信エラー:キーに一致するエンティティが見つかりませんでした:ListOfMessages( "23") System.out.println( "mes" + " mes); – sap

+0

とquery.addFilter(...)は何も返しませんでした。 – sap

+1

取得しようとしているオブジェクトが存在しない可能性があります。エンティティの種類名とIDを再確認してください。また、あなたの鍵がLongではなくStringでなければならないこと、そして 'message_id'の型が〜 –

関連する問題