我对如何创建一个“键”对象来准确选择我的实体(“客户”)的 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 = "你的邮箱" name = "你的名字"
- id/name = 2 email = "你的邮箱" name = "你的名字"
- id/name = 3 email = "你的邮箱" name = "你的名字"
我想选择 id/name=1 的客户。我试过了: KeyFactory.createKey("Customer", 1); 和 KeyFactory.createKey("客户", "你的名字");
但没有成功。
当我以编程方式对“客户”进行搜索(asList)并打印我看到的键值时:
- 第 1 行键 = 客户(“您的姓名”)/客户(1)
- 第 2 行键 = 客户(“您的姓名”)/客户(2)
- 第 3 行键 = 客户(“您的姓名”)/客户(3)
键的可打印值格式为:“Entity(name)/Entity(id/name)”
如何在我的代码中创建这样的键值?在 javadoc 我只看到:
- createKey("种类", id)
- createKey("种类", "名称")
其他方法需要一个祖先,我没有创建一个祖先....这是我为创建 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("客户KeyFactory.keyToString = "+KeyFactory.keyToString(key));
- 输出:信息:客户 KeyFactory.keyToString = Customer("your name")/Customer(1)