EmbeddedEntity中Key的作用是什么?
What is the purpose of Key in EmbeddedEntity?
AppEngine 数据存储对嵌套实体使用 EmbeddedEntity
。但是我不明白EmbeddedEntity
中的Key
的用途?什么时候可以用?
例如:
Entity book = new Entity("Book");
book.setProperty("name", "Hollow Man");
book.setProperty("year", 2000);
EmbeddedEntity author = new EmbeddedEntity();
author.setKey(KeyFactory.createKey("AUTHOR", 123));
author.setProperty("name", "Den Simons");
book.setProperty("author", author);
datastore.put(book);
稍后我可以获取 book
并从中获取 author
。 author
将设置密钥,这意味着密钥被保留。但是可以用这个键查询吗? EmbeddedEntity
javadoc 说:
It is not queryable when stored in the datastore.
那么 EmbeddedEntity
中 Key
的目的是什么?
https://cloud.google.com/appengine/docs/java/datastore/entities#Java_Embedded_entities 中的示例展示了如何有选择地设置 另一个 相同类型实体的键作为嵌入实体的键,即 没有嵌入,这样以后就可以"recover the original entity from the embedded entity"了。我猜不是经常需要,但是当你确实需要它的时候很方便,也许吧!
那里的相关代码片段是:
// Entity contactInfo = /*...*/;
EmbeddedEntity embeddedContactInfo = new EmbeddedEntity();
Key infoKey;
infoKey = contactInfo.getKey();
embeddedContactInfo.setKey(infoKey);
AppEngine 数据存储对嵌套实体使用 EmbeddedEntity
。但是我不明白EmbeddedEntity
中的Key
的用途?什么时候可以用?
例如:
Entity book = new Entity("Book");
book.setProperty("name", "Hollow Man");
book.setProperty("year", 2000);
EmbeddedEntity author = new EmbeddedEntity();
author.setKey(KeyFactory.createKey("AUTHOR", 123));
author.setProperty("name", "Den Simons");
book.setProperty("author", author);
datastore.put(book);
稍后我可以获取 book
并从中获取 author
。 author
将设置密钥,这意味着密钥被保留。但是可以用这个键查询吗? EmbeddedEntity
javadoc 说:
It is not queryable when stored in the datastore.
那么 EmbeddedEntity
中 Key
的目的是什么?
https://cloud.google.com/appengine/docs/java/datastore/entities#Java_Embedded_entities 中的示例展示了如何有选择地设置 另一个 相同类型实体的键作为嵌入实体的键,即 没有嵌入,这样以后就可以"recover the original entity from the embedded entity"了。我猜不是经常需要,但是当你确实需要它的时候很方便,也许吧!
那里的相关代码片段是:
// Entity contactInfo = /*...*/;
EmbeddedEntity embeddedContactInfo = new EmbeddedEntity();
Key infoKey;
infoKey = contactInfo.getKey();
embeddedContactInfo.setKey(infoKey);