【问题标题】:AppEngine + Objectify - Can I turn a Key<Object> back into Object?AppEngine + Objectify - 我可以将 Key<Object> 转回 Object 吗?
【发布时间】:2011-11-23 23:52:24
【问题描述】:

我正在用 Objectify 做一个简单的异步 put 操作:

ofy().async().put(object);

这会返回 Result>,我可以调用

Result<Key<ObjectEntity>> result = ofy().async().put(object);

然后我可以调用 .get() 来阻止,直到我得到结果:

Key<ObjectEntity> objectKey = result.get();

但是我可以用这个 objectKey 做什么来取回我的对象​​实体?我基本上希望能够将其作为对象发送回 GWT。

【问题讨论】:

  • 想澄清一下,您想将密钥发送回 ure webapp?但只是让你知道,你真的不应该抓住关键对象来检索对象......你会在数据存储中插入一个带有一些 id 的对象,然后当你想检索你的对象时,您将创建一个新密钥: new new Key(Entity.class,entityId)
  • 为什么需要“返回”对象?你仍然在 object 中拥有它,它是你传递给原始 put 操作的。
  • Nadir,我在数据存储中放了一个对象,我能得到的只有对象的键。我想要实际的对象。如果我执行非异步获取,这就是我返回的内容。
  • 尼克,我希望更新的对象返回它的原因是因为我正在从 jdo 转换我的应用程序,这就是我当前应用程序的工作方式。此外,我相信还有其他实例需要能够从键转换为原始对象。如果可以不必对密钥的每个重要记录进行调用以重建对象,那将使我的生活变得更加简单。它很早,但我相信我在异步获取时遇到了同样的问题,当我无法访问我放置的对象时就会发生这种情况。

标签: google-app-engine objectify


【解决方案1】:

这应该让你的对象回来:

Result<Foo> fooResult = ofy.async().get(Foo.class, "foo1-id");
Foo foo = fooResult.get();

我对 Objectify 进行了一些尝试,所以我绝对不是专家,但您可能需要确保,如果您通过异步 put 调用将对象放入数据存储区,您会一直阻塞直到它被调用在调用之前插入数据存储区。如果您最终需要在插入实体后立即检索它,那么您就违背了使用 async.put() 的目的。

您可能也知道这一点,但 Objectify 的人在整理他们的 API Javadoc 以供参考方面做得不错。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2018-04-28
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 2013-01-30
    相关资源
    最近更新 更多