我无法使用下面的JDO 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;
}
Multimap index:
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();
}
});
答案 0 :(得分:3)
首先,如果您打算使用Guava,您应该使用真正的Guava版本,而不是重新打包以供应用程序引擎内部使用的代码。
也就是说,看起来(假设重新打包的代码与当前发布的Guava代码的工作方式相同),至少有一个Score
对象'getObjKey()
方法必须返回null
。 ImmutableMultimap
不允许使用null
个键或值。