1

私は基本的に2つのクラスを持っています:

@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。これは、この 2 番目の状況に由来します。

次に、 Jeff の推奨事項を読み、DI の代わりに Objectify への静的呼び出しを使用するようにアプリを変更しました。

現在、すべてが正常に機能しています。

于 2013-07-21T21:12:19.767 に答える
0

私の場合、エンティティを前述の静的メソッドに登録していましたが、まだエラーが発生していました。objectify の FAQ で述べたように、これはクラスがエンティティとして登録される前にエンティティが読み込まれたことを意味します。これはオブジェクト化の実装の問題のようです。したがって、私にとって単純だが大雑把なハックは、失敗する操作 (OfyService.factory().register()) の前にエンティティを登録することであり、それは機能しました。これが誰かに役立つことを願っています。

于 2015-07-21T06:41:22.593 に答える
0

1 つのエンティティ クラスの名前を変更すると、このエラーが発生し始めます。別のエンティティには、古いエンティティ名を参照するキーがありました。この場合、古いエンティティ名への参照を持っていたすべてのエンティティを更新または保存する必要があります

エンティティの名前を変更するときは、この点に注意してください

于 2017-01-29T14:43:07.997 に答える