应用程序引擎标识符。密钥与 ID

发布于 2024-10-30 16:18:29 字数 353 浏览 1 评论 0原文

为了识别 Google App Engine 中的 JDO 对象,我使用 Key 类型。它工作正常,但是当我需要通过 url 传递它时,它会变得有点长。

例如:http://mysite.com/user/aghtaWx1LWFwcHIZCxIGTXlVc2VyGAMMCxIHTXlJbWFnZRgHDA

在管理查看器中查看我的实体时,我可以看到数据存储还为我的实体对象设置了一个“id”,这似乎是一个增量数值,与 Key 字符串相比相当短。我可以用它来获取有关我的对象的信息吗?我该怎么做?我尝试使用 getObjectbyId() 与 id 而不是密钥...它不起作用。

有什么想法吗?

To identify my JDO objects in Google App Engine I use the Key type. It works fine but when I need to pass this through urls it gets sort of long.

For example: http://mysite.com/user/aghtaWx1LWFwcHIZCxIGTXlVc2VyGAMMCxIHTXlJbWFnZRgHDA

When viewing my entities in my admin viewer I can see that the data-store also sets an "id" for my entity object, which seems to be an incremental numeric value, which is quite short compared to the Key string. Can I use this to grab information on my object? How do I do this? I tried using getObjectbyId() with the id instead of the key... it doesn't work.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉城凉梦凉人心 2024-11-06 16:18:29

是的,你可以这样做。每当您需要获取 ID 时,都可以使用以下方法调用。假设您正在使用名为 user 的实体类 User 对象:user.getKey().getId()。 id 的类型为long。请参阅 JavaDoc com.google.appengine.api.datastore.Key 的详细信息。

只要您拥有 ID,您就可以从中构建 Key,然后简单地查询该对象。

Key key = KeyFactory.createKey("User", id);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
User user = datastore.get(key);

Yes, you can do that. Whenever you need to get the ID you can use the following method call. Assume you are using an object of the entity class User named user: user.getKey().getId(). The id is of type long. See the JavaDoc of com.google.appengine.api.datastore.Key for more information.

Whenever you have the ID you can build the Key from it and then simply query for the object.

Key key = KeyFactory.createKey("User", id);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
User user = datastore.get(key);
最后的乘客 2024-11-06 16:18:29

您需要将实体中的 id 定义为主键:

private class MyObject implements Serializable{
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;
}

然后您可以尝试以下操作:

long id = someObject.getId();

MyObject mo = getPM().getObjectById(MyObject.class, id);

You will need to define the id in your Entity as a primary key:

private class MyObject implements Serializable{
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;
}

Then you can try this:

long id = someObject.getId();

MyObject mo = getPM().getObjectById(MyObject.class, id);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文