1

我基本上有两个课程:

@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。

谢谢!

4

3 回答 3

3

我发现了问题,我正在回答这个问题,因为它可能会发生在其他人身上。底线是:我的 Guice 容器在不同的点注入了不同的对象化工厂,所以我最终得到了一个包含所有注册实体的上下文,而另一个根本没有注册实体的上下文,ClassCastException来自第二种情况。

然后我阅读了Jeff 的建议并更改了我的应用程序以使用对 Objectify 的静态调用而不是 DI。

现在一切正常。

于 2013-07-21T21:12:19.767 回答
0

在我的情况下,我正在使用提到的静态方法注册我的实体,但我仍然收到错误。正如在 objectify 的常见问题解答中提到的,这意味着在类注册为实体之前加载了实体。这似乎是一个客观化的实现问题。所以对我来说简单但粗暴的黑客是在失败的操作(OfyService.factory().register())之前注册实体并且它有效。希望这可以帮助某人。

于 2015-07-21T06:41:22.593 回答
0

更改一个实体类的名称后,我开始收到此错误。另一个实体有一个引用旧实体名称的 Key。在这种情况下,您应该更新或保存所有引用旧实体名称的实体

重命名实体时请记住这一点

于 2017-01-29T14:43:07.997 回答