【问题标题】:How do I return an auto generated numeric ID from the key in google app engine?如何从谷歌应用引擎中的密钥返回自动生成的数字 ID?
【发布时间】:2013-05-28 13:55:48
【问题描述】:

这是我的代码

Entity post = new Entity("Post");
int ID = post.getKey().getId();
post.setProperty("ID", ID);

但 ID 在我的数据存储中显示为 0。

我做错了什么?

【问题讨论】:

    标签: java android google-app-engine servlets


    【解决方案1】:

    在将实体放入数据存储区之前,您不会有 ID getId()

    为什么要将 Key 中的 id 存储为实体的属性。这是完全多余的。此外,密钥的 id 也无法更改以增强冗余。

    【讨论】:

    • 我希望能够通过查询某个属性从实体对象中检索 id 号。有没有办法做到这一点?
    • 如果您有 id,并且您知道您正在寻找的 Kind,那么您可以通过 Key 获取它的对象。没有意义的查询。
    • 问题是我没有 id,因为它是自动生成的。我希望能够通过其中一个属性找到 id。
    • 一旦你放置了实体,那么key就有了id。所以你放int ID = post.getKey().getId();之后就可以得到
    • 在 put 之后将 ID 存储为属性,仍然没有任何效果。
    【解决方案2】:

    您可以使用方法 allocateIds 来生成唯一 ID。

    这是一个例子。

    DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();
    
    KeyRange keyRange = datastoreService.allocateIds("CartItem", 1L);
    
    // you have ID here before save
    Entity item = new Entity(keyRange.getStart());
    datastoreService.put(item);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      • 2017-04-19
      • 2011-09-08
      相关资源
      最近更新 更多