基于此处的Q& A: Get an Objectify Entity's Key
对于持久化对象,获取实体键:
@Transient
Key<Categoria> getKey() {
return new Key<Categoria>(Categoria.class, id);
}
Doens不会返回相同的密钥:
Objectify ofy = ObjectifyService.begin();
Key<Categoria> key = ofy.getFactory().getKey(someobject);
还是应该呢?
我的模型看起来像这样:
@Entity
class Categoria{
@Parent
private Key<Someclass> parentKey;
@Transient
Key<Categoria> getKey() {
return new Key<Categoria>(Categoria.class, id);
}
// Code omitted
}
答案 0 :(得分:2)
如果Categoria
有@Parent
字段,它只会生成不同的密钥。在这种情况下,您需要将父键与类和id一起传递给Key构造函数。
答案 1 :(得分:0)
它应该。我总是通过从长ID创建的密钥获得Objectify Entities。如果需要,您还可以使用返回的密钥从密钥中获取长ID。
编辑: 你不能按照你的方式获得钥匙。
你必须这样做。
Key<Car> rootKey = new Key<Car>(Car.class, 959);
Key<Car> keyWithParent = new Key<Car>(parent, Car.class, 959);
所以对于这一行: 键key = ofy.getFactory()。getKey(someobject);
键将包含父键PLUS和Categoria键
这意味着在函数中执行查找时必须包含父键
Key<Categoria> getKey() {
return new Key<Categoria>(parentKey, Categoria.class, id);
}