Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 为什么JDO类会破坏Guava多重映射索引?_Google App Engine_Jdo_Guava_Graniteds - Fatal编程技术网

Google app engine 为什么JDO类会破坏Guava多重映射索引?

Google app engine 为什么JDO类会破坏Guava多重映射索引?,google-app-engine,jdo,guava,graniteds,Google App Engine,Jdo,Guava,Graniteds,我无法使用下面的JDO Score类创建多重映射索引。如果我用Object[]代替Score,一切都很好。我认为问题在于Score类不可序列化?我在分数课上遗漏了什么 分数等级: @PersistenceCapable(identityType=IdentityType.APPLICATION, detachable="true") @javax.jdo.annotations.Version(strategy=VersionStrategy.VERSION_NUMBER,column="VER

我无法使用下面的JDO Score类创建多重映射索引。如果我用Object[]代替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();
    }
});
列表行=新的ArrayList(分数);
Multimap分组=Multimaps.index(行,
新函数(){
公钥应用(分数项){
return(Key)item.getObjKey();
}
});

首先,如果你打算使用番石榴,你可能应该使用真正的番石榴版本,而不是重新打包供app engine内部使用的代码


也就是说,看起来(假设重新打包的代码与当前发布的Guava代码的工作方式相同)至少有一个
Score
对象的
getObjKey()
方法必须返回
null
ImmutableMultimap
s不允许
null
键或值。

首先,如果您要使用Guava,您可能应该使用真实版本的Guava,而不是在app engine中重新打包以供内部使用的代码


也就是说,看起来(假设重新打包的代码与当前发布的Guava代码的工作方式相同)至少有一个
Score
对象的
getObjKey()
方法必须返回
null
ImmutableMultimap
s不允许
null
键或值。

您到底遇到了什么问题?下面的Multimap索引适用于本机对象[]。上面带有Score类的代码不存在。为什么分数类在多重映射索引中不起作用<代码>列表行=新阵列列表(obj1、obj2、obj3);Multimap group=Multimaps.index(行,新函数(){public Key apply(Object[]item){return(Key)item.getObjKey();}})呃,那应该不行。数组没有
getObjKey()
方法。你需要解释你所说的“有效”或“无效”的确切含义。编译器错误?运行时异常?意外的结果?你的
Score
类似乎也没有
getObjKey()
方法,所以我不知道该怎么想。Score类有一个getObjKey方法,这不是问题所在,我在这篇文章中省略了它…抱歉。从Multimaps.index(rows,new Function()列表行包含调试器中的数据,它通过…
PersistenceManager pm=pmf.getPersistenceManager();pm.getFetchPlan().setdetacheoptions(FetchPlan.DETACH_UNLOAD_字段);列表行=null;查询q=pm.newQuery(Score.class);行=(List)q.execute()填充;
列表中必须有空元素?如果我传入一个用属性填充的java.lang.Object,也不例外。顺便说一下,最好通过编辑问题而不是注释来发布附加信息,如堆栈跟踪。这有助于使问题易懂,您也可以格式化它。您到底遇到了什么问题aving?下面的多重映射索引与本机对象[]一起工作。上面的代码与Score类一起工作。为什么Score类在多重映射索引中不工作?
List rows=new ArrayList(obj1,obj2,obj3);Multimap group=Multimaps.index(rows,new Function(){public Key apply(Object[]项){return(Key)item.getObjKey();}}});
Er,这不应该工作。数组没有
getObjKey()
方法。您需要解释“工作”或“不工作”的确切含义。编译器错误?运行时异常?意外结果?您的
Score
类似乎没有
getObjKey()
method,所以我不确定该怎么想。Score类有一个getObjKey方法,这不是问题,我在这篇文章中省略了它…很抱歉。从Multimaps.index(rows,new Function()列表行包含调试器中的数据,它是通过…
PersistenceManager pm=pmf.getPersistenceManager()填充的);pm.getFetchPlan().setDepartmentOptions(FetchPlan.DETACH_UNLOAD_字段);List rows=null;Query q=pm.newQuery(Score.class);rows=(List)q.execute()
列表中必须有空元素?如果我传入一个用属性填充的java.lang.Object,也不例外。顺便说一句,最好通过编辑问题而不是注释来发布附加信息,如堆栈跟踪。这有助于理解问题,您也可以格式化它。