我必须为学校开发一个Web应用程序,但我有以下问题:我有一个具有一些属性的对象,其中一个是带有自定义对象的arraylist。然后我使用objectify将对象放在数据存储区中,但当我检查gae仪表板数据存储区查看器时,它具有所有属性,但不具有arraylist。
为了更好地了解它的工作原理: 这是包含arraylist的对象:
public class Competentie implements Serializable {
private static final long serialVersionUID = 1L;
@Id Long id;
private String competentie;
List<Stelling> deStellingen = new ArrayList<Stelling>();
public Competentie(String c){
competentie = c;
}
public Competentie(){}
public String getCompetentie(){
return competentie;
}
public void setCompetentie(String c){
competentie = c;
}
public void voegStellingToe(Stelling s){
deStellingen.add(s);
}
public List<Stelling> getStellingen(){
return deStellingen;
}
}
这就是我把它放在数据存储区中的方式
public void createCompetentie(String comp){
Competentie c = new Competentie(comp);
ofy.put(c);
}
有人可以帮我解决这个问题吗?如果有人需要更多信息,请问。
答案 0 :(得分:1)
在这里查看维基: https://code.google.com/p/objectify-appengine/wiki/Entities#Embedding
您是否在Stelling类上使用了@Embed?这是我唯一能想到的。他们还有一系列要在嵌入类中牢记的事项,它们是: 要记住的一些事情:
这不支持任何类型的二维结构。 您不能将@Embed数组/集合嵌套在其他@Embed数组/集合中。 您不能将本机类型的数组/集合放在@Embed数组/集合中。 但是,您可以在任意数量的@Embed类中嵌套@Embed数组/集合。 您应该初始化集合。空或集合不会写入数据存储区,因此在加载期间会被忽略。此外,具体实例将按原样使用,允许您使用Comparators或其他状态初始化集合。
如果上面的一个是真的,你也可以考虑对deStellingen对象进行searlizing,但是你不能查询它。 https://code.google.com/p/objectify-appengine/wiki/Entities#Serializing