我基本上有两个班级:
@Entity
class A {
@Load
Ref<B> other;
public B getOther() {
return other.get();
}
}
@Entity
class B {
...
}
当我调用someInstanceOfA.getOther()时,它会抛出:
java.lang.ClassCastException: com.google.appengine.api.datastore.Entity cannot be cast to objectify.example.B
我正在使用objectify v 4.0b3。
谢谢!
答案 0 :(得分:3)
我发现了问题,我正在回答这个问题,因为它可能会发生在其他人身上。底线是:My Guice容器在不同的点注入了不同的客观化工厂,所以我最终得到了一个注册所有实体的上下文,另一个没有注册实体,ClassCastException
来自第二种情况。 / p>
然后我阅读Jeff's recommendation并更改我的应用程序以使用静态调用Objectify而不是DI。
现在一切正常。
答案 1 :(得分:0)
在我的情况下,我使用提到的静态方法注册我的实体,但我仍然收到错误。 如客观化常见问题中所述,这意味着在将类注册为实体之前已加载实体。这似乎是一个客观化的实施问题。 所以对我来说简单但粗暴的黑客是在失败的操作(OfyService.factory()。register())之前注册实体并且它有效。 希望这有助于某人。
答案 2 :(得分:0)
我在更改一个实体类的名称后开始收到此错误。另一个实体有一个引用旧实体名称的Key。在这种情况下,您应该更新或保存所有引用旧实体名称的实体
重命名实体时请记住这一点