エンティティ(「顧客」)の正確に1行を選択するための「キー」オブジェクトを作成する方法について少し混乱しています。
私のコード:
Query query = new Query("Customer");
// **** how do I have to create this key ???
Key key = KeyFactory.createKey("Customer", 1);
// ****
FilterPredicate keyFilter = new FilterPredicate(Entity.KEY_RESERVED_PROPERTY, FilterOperator.EQUAL, key);
query.setFilter(keyFilter);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
PreparedQuery pq = datastore.prepare(query);
Entity customer = pq.asSingleEntity();
if (! (customer == null)) {
log.info("OK !");
}
else {
log.info("no customer found");
}
私の結果は常に「顧客が見つかりません」です。
データストアビューア(ローカルで作業しています)を使用すると、3つの行が表示されます。
- id / name = 1 email = "your email" name = "your name"
- id / name = 2 email = "your email" name = "your name"
- id / name = 3 email = "your email" name = "your name"
id / name=1の顧客を選択したい。私が試した:KeyFactory.createKey( "Customer"、1); およびKeyFactory.createKey( "Customer"、 "your name");
しかし、成功しませんでした。
プログラムで「Customer」を検索(asList)して、表示されるキーの値を出力すると、次のようになります。
- 行1キー=Customer( "your name")/ Customer(1)
- 行2キー=Customer( "your name")/ Customer(2)
- 行3キー=Customer( "your name")/ Customer(3)
キーの印刷可能な値は、「Entity(name)/ Entity(id / name)」の形式です。
コードでそのようなキー値を作成するにはどうすればよいですか?javadocで私が見るのは:
- createKey( "kind"、id)
- createKey( "kind"、 "name")
他のメソッドには祖先が必要です。祖先は作成していません...。これは、3行を作成するために実行したコードです(3回実行されました)。
Key customerKey = KeyFactory.createKey("Customer", "your name");
Entity customer = new Entity("Customer", customerKey);
customer.setProperty("name", "your name");
customer.setProperty("email", "your email");
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(customer);
前もって感謝します !
よろしく
マックス
つまり、「toString」が次の結果をもたらすキーを作成するにはどうすればよいでしょうか。
- コード:log.info( "customer KeyFactory.keyToString =" + KeyFactory.keyToString(key));
- 出力:INFO:customer KeyFactory.keyToString = Customer( "your name")/ Customer(1)