如何在拥有实体时检索Key <t> </t>

时间:2014-08-09 00:56:26

标签: objectify google-app-engine

我有一个使用Objectify v5加载的类,如何从Objectify中获取关联的Key<T>

@Entity
@Cache
public abstract class BaseEntity<T,P>
{
    @Parent
    private Key<P> parent;

    @Id
    private String uuid;
}

我知道ofy().save()会返回Key<T>,但我希望从过滤器或ID加载的Key<T>中获取Entity

我搜遍了Objectify v5文档并且无法找到采用Entity并返回该实体的Key<T>的方法。

2 个答案:

答案 0 :(得分:0)

解决方案

Key.create(T pojo);

但是在上面的情况下,它不能在BaseEntity<T,P>课程内部工作。

@Nonnull
public Key<T> getKey() { return Key.create(this); }

抱怨它想要将结果转换为Key<T>

经过一些实验后,我刚刚在我的BaseEntity

中添加了一个方法
@Nonnull
public Key<T> getKey() 
{ 
    return Key.create(this.parent, this.entityType, this.uuid.toString()); 
}

这将返回自动生成的Key<T>

答案 1 :(得分:-1)

Java的打字系统不够复杂,不足以表达“我希望这是任何类型'这恰好是在叶级”(因为你在抽象类中)。 Scala可以做到这一点,但不是Java。至少我不知道。

除非我误解了你要做的事情......?