16

appengine クラウド エンドポイントとオブジェクト化を使用しています。以前にこれらのエンドポイントをデプロイしたことがありますが、現在それらを更新していますが、Objectify では機能しません。新しいマシンに移動し、最新の appengine 1.8.6 を実行しています。objectify をクラスパスに入れてみましたが、うまくいきませんでした。私はこれがうまくいくことを知っています、私は何が欠けていますか??

endpoints.sh を実行する場合:

Error: Parameterized type
   com.googlecode.objectify.Key<MyClass> not supported.

更新: 古いコンピューターに戻り、同じエンドポイントで endpoints.sh を実行したところ、問題なく動作しました。古いマシンには 1.8.3 があります。objectify 3.1 を使用しています。

更新 2: 古いマシンを 1.8.6 に更新すると、他のマシンと同じエラーが発生します。2 つの可能性を残します: 1) エンドポイントが objectify 3.1 をサポートしなくなっ た、または 2) エンドポイントの最新バージョンにバグがある

おそらく#1...とにかく4.0にアップデートするつもりだった...

4

4 に答える 4

18

Objectify の人気のためKey、より一般的な解決策が利用可能になるまで、タイプをサポートするための回避策が以前のリリースに追加されました。新しいソリューションが利用可能になったため、回避策は削除されました。プロパティの問題にアプローチできる方法は 2 つあります。

  1. @ApiResourcePropertyシリアル化中にキーがオブジェクトから省略されるようにする注釈を追加します。シンプルなソリューションが必要で、クライアントのキーにアクセスする必要がない場合は、このアプローチを使用してください。
  2. @ApiTransformerフィールドをシリアル化/逆シリアル化するための互換性のあるメカニズムを提供する注釈を追加します。クライアントでキー (またはその表現) にアクセスする必要がある場合は、このアプローチを使用します。これにはトランスフォーマー クラスを記述する必要があるため、最初のオプションよりも手間がかかります。
于 2013-10-31T21:08:51.373 に答える
0

@ApiResourcePropertyおよびを使用してこれにアプローチする方法については、他の人がすでに述べています@ApiTransformer。しかし、クライアント側で利用可能なキーが必要であり、エンティティごとにエンティティ全体を変換したくありません。Objectify Key を に置き換えてみましたがcom.google.appengine.api.datastore.Key、ここでの問題は主にそのエンドポイントがパラメーター化された型をサポートしていないことが原因であるため、私の場合もうまく機能したようです。

于 2016-03-10T05:45:59.380 に答える