1

自从升级到 GAE 1.8 后,在 Objectify 中使用 @Id 进行注释时,我的 id 变得分散:

@Id
private Long id;

尽管我了解在避免云平台上的热点方面需要分散的 id,但 Objectify 有没有办法恢复旧的增量 id?必须在 UI 中显示十六进制值(如 1DZENH6BSOW)以避免大量生成的 64 位 id 并不能减少它。

我很高兴有一个辅助注释@IdLegacy 与@Id 一起工作,然后@Id 仍将生成长ID,我可以将旧ID 用于显示目的。

解决方案:

在我的构造函数中,我有一段简单的代码,如果不存在,则分配一个 id:

if (getId() == null){
    ObjectifyFactory f = new ObjectifyFactory();
    Key<MyEntity> key = f.allocateId(MyEntity.class);
setId(key.getId());
}       
4

1 回答 1

1

As far as I know, Objectify passes along the App Engine Datastore's scattered id behavior.

A quick check of the Objectify issue tracker doesn't show that anyone has yet made a request for incremental ids. Submit a request to the Objectify devs. http://code.google.com/p/objectify-appengine/issues/list

于 2013-10-03T06:28:22.040 回答