0

我必须为学校开发一个Web应用程序,但我有以下问题:我有一个对象具有几个属性,其中一个是具有自定义对象的数组列表。然后我使用objectify将对象放入数据存储区,但是当我检查gae仪表板数据存储区查看器时,它具有所有属性,但不包含数组存储区。GAE数据存储:如何存储自定义对象的数组列表

要给它是如何工作更好的视野: 这是包含数组列表对象:

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); 
} 
莫非

别人的帮助我在这呢?如果有人需要更多信息,请问。

回答

1

看看这里,在那里维基: https://code.google.com/p/objectify-appengine/wiki/Entities#Embedding

你使用@Embed在Stelling类?这是我能想到的唯一的事情。他们还有一些需要记住的内容,它们是: 有些事情要记住:

这不支持任何类型的二维结构。 您不能在其他@Embed数组/集合中嵌套@Embed数组/集合。 您不能在@Embed数组/集合中放置数组/集合的本机类型。 但是,您可以在任何数量的@Embed类中嵌套@Embed数组/集合。 您应该初始化集合。空集合或空集合不会写入数据存储,因此在加载期间会被忽略。此外,具体实例将按原样使用,允许您使用比较器或其他状态初始化集合。

如果上述其中之一为真,您也可以考虑对deStellingen对象进行searlizing,但是您无法在其上查询。 https://code.google.com/p/objectify-appengine/wiki/Entities#Serializing

+0

我不能使用@Embed注释,因为我使用的是objectify v3,我必须使用该版本。这个版本也有可能吗? –

+0

在Objectify v3中,您应该可以使用@Embedded注释。 – stickfigure

+0

指向v3文档中@embed的链接: https://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#@Embedded – Michael