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
Java Objectify 5是否保存嵌入的列表列表或数组数组?_Java_Google App Engine_Objectify - Fatal编程技术网

Java Objectify 5是否保存嵌入的列表列表或数组数组?

Java Objectify 5是否保存嵌入的列表列表或数组数组?,java,google-app-engine,objectify,Java,Google App Engine,Objectify,我正在将代码从Objectify4转换为5 之前我保存了一个@实体,其中包含一个 List<List<String>> listOfListOfStrings; 数组的数组也有同样的问题 下面是我用来测试的一些代码,MemberClass只包含一个字符串 @Entity public class OfyEntityClass { @Id private Long ID; List<List<MemberClass>> me

我正在将代码从Objectify4转换为5

之前我保存了一个
@实体
,其中包含一个

List<List<String>> listOfListOfStrings;
数组的数组也有同样的问题

下面是我用来测试的一些代码,
MemberClass
只包含一个
字符串

@Entity
public class OfyEntityClass {
    @Id
    private Long ID;
    List<List<MemberClass>> memberClassObjects;
    public OfyEntityClass(){
        memberClassObjects=new ArrayList<List<MemberClass>>(8);
        List<MemberClass> l=new ArrayList<MemberClass>(8);
        MemberClass memberClassObject=new MemberClass();
        l.add(memberClassObject);
        memberClassObjects.add(l);
    }
}

或者,也许有一种方法可以指定翻译器的递归级别数?

主要对象化作者

Objectify4不能保存类型为
列表的字段。我甚至无法想象这会起什么作用,或者为什么会起作用。它周围没有测试。过去,GAE只允许在实体中存储标量值的简单集合。在某种程度上,他们通过提供
EmbeddedEntity
扩展了这一点,但这是不同的。我没有尝试过用低级api手动存储
列表,但如果它能工作,这是谷歌没有宣布也没有记录的新东西。在GAE/Python(db或ndb)中似乎也没有任何方式来定义这样的结构


所以我不知道该告诉你什么。如果你告诉我你有一个可以工作的应用程序,它存储和检索一个
列表
字段,那么这是一个新的东西。您部署此功能有多长时间了?

我刚刚恢复到Objectify4并检查了,是的,它确实可以部署。无论如何,要为Objectify5保存列表列表,我需要将每个列表级别放在自己的类中,并将它们嵌套在Entity中?这是绝对受支持的吗?首先:你的代码没有做你认为它做的事情。我只是在Objectify v4分支中添加了几个测试,但没有,它不起作用。我不能告诉你为什么你的代码没有失败,但我很确定你不能保存和加载二维列表。第二:是的,在v5中,如果您有一个类型为List的字段,并且该对象有一个类型为List的字段,那么它就可以工作。这样可以无限期地嵌套集合。这只适用于v5,而不适用于v4。它是受支持和文档化的。我可以为递归类这样做吗?(参见上面的更新2)目前还没有,但这肯定是一个合理的功能请求(至少是可能的)。是否将其添加到github问题跟踪器?
@Entity
public class OfyEntityClass {
    @Id
    private Long ID;
    List<List<MemberClass>> memberClassObjects;
    public OfyEntityClass(){
        memberClassObjects=new ArrayList<List<MemberClass>>(8);
        List<MemberClass> l=new ArrayList<MemberClass>(8);
        MemberClass memberClassObject=new MemberClass();
        l.add(memberClassObject);
        memberClassObjects.add(l);
    }
}
    at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
at com.googlecode.objectify.impl.translate.CollectionTranslatorFactory.create(CollectionTranslatorFactory.java:38)
at com.googlecode.objectify.impl.translate.Translators.create(Translators.java:138)
at com.googlecode.objectify.impl.translate.Translators.get(Translators.java:117)
at com.googlecode.objectify.impl.translate.CreateContext.getTranslator(CreateContext.java:27)
at com.googlecode.objectify.impl.translate.ClassPopulator.<init>(ClassPopulator.java:88)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.createEmbeddedClassTranslator(ClassTranslatorFactory.java:75)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:50)
at com.googlecode.objectify.impl.translate.ClassTranslatorFactory.create(ClassTranslatorFactory.java:36)