0

以下の JDO Score クラスでマルチマップ インデックスを作成できません。Object[] を Score に置き換えると、すべて正常に動作します。問題は Score クラスがシリアライズできないことだと思いましたか? Score クラスに欠けているものは何ですか?

スコア クラス:

@PersistenceCapable(identityType=IdentityType.APPLICATION, detachable="true")
@javax.jdo.annotations.Version(strategy=VersionStrategy.VERSION_NUMBER,column="VERSION",
     extensions={@Extension(vendorName="datanucleus", key="field-name",value="version")})

public class Score implements Serializable {

  private static final long serialVersionUID = -8805789255398748271L;

  @PrimaryKey
  @Persistent(primaryKey="true", valueStrategy=IdGeneratorStrategy.IDENTITY)
  private Key id;

  private Long version;

  @Persistent
  private String uid;

  @Persistent
  private Integer value;
}

マルチマップ インデックス:

List<Score> rows = new ArrayList(scores);
Multimap<Key, Score> grouped = Multimaps.index(rows,
  new Function<Score, Key>() {

    public Key apply(Score item) {
      return (Key) item.getObjKey();
    }
});
4

1 に答える 1

3

まず第一に、Guava を使用する場合は、アプリ エンジンで内部使用するために再パッケージ化されたコードではなく、おそらく実際のリリースの Guava を使用する必要があります。

そうは言っても、(再パッケージ化されたコードが現在リリースされている Guava コードと同じように機能すると仮定すると)ScoreオブジェクトのgetObjKey()メソッドの少なくとも 1 つが を返す必要があるようnullです。■キーまたは値ImmutableMultimapを使用できません。null

于 2011-08-26T03:43:45.453 に答える