KeyEntity中Key的目的是什么?

时间:2015-01-07 00:40:10

标签: java google-app-engine

AppEngine数据存储使用EmbeddedEntity表示嵌套实体。但我不理解KeyEmbeddedEntity的目的?何时可以使用?

例如:

    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并从中获取authorauthor将具有密钥集,这意味着密钥是持久的。但是可以用这个键查询吗? EmbeddedEntity javadoc说:

  

存储在数据存储区中时无法查询。

那么KeyEmbeddedEntity的目的是什么?

1 个答案:

答案 0 :(得分:0)

https://cloud.google.com/appengine/docs/java/datastore/entities#Java_Embedded_entities上的示例显示了如何选择 实体的另一个实体作为嵌入式实体的密钥。 ,以便以后你可以“从嵌入式实体中恢复原始实体”。我想这并不是经常需要的,但是当你确实需要它时,也许是方便的!

相关的代码段是:

// Entity contactInfo = /*...*/;
EmbeddedEntity embeddedContactInfo = new EmbeddedEntity();
Key infoKey;

infoKey = contactInfo.getKey();
embeddedContactInfo.setKey(infoKey);