小编Dav*_*vid的帖子

GAE数据存储区:持久引用的对象

我试图将Java对象持久化到GAE数据存储区.

我不确定如何持久化具有("非平凡")引用对象的对象.也就是说,假设我有以下内容.

public class Father {
    String name;
    int age;
    Vector<Child> offsprings; //this is what I call "non-trivial" reference 
    //ctor, getters, setters...
}

public class Child {
    String name;
    int age;
    Father father; //this is what I call "non-trivial" reference 
    //ctor, getters, setters...
}
Run Code Online (Sandbox Code Playgroud)

名称字段在每个类型域中都是唯一的,并且被视为主键.

为了保持"普通"(String,int)字段,我只需要添加正确的注释.到现在为止还挺好.但是,我不明白我应该如何坚持参考的自酿(儿童,父亲)类型.我是不是该:

  1. 将每个这样的引用转换为保存主键(在本例中为名称String)而不是"实际"对象,所以Vector<Child> offsprings;变为Vector<String> offspringsNames;

    如果是这种情况,我如何在运行时处理对象?我是否只是查询主键Class.getName,以检索refrenced对象?

  2. 转换每个这样的引用以保存数据存储在正确put()操作时提供给我的实际密钥?那就Vector<Child> offsprings;变成Vector<Key> offspringsHashKeys;

我已经阅读了所有官方相关的GAE文档/示例.在整个过程中,它们始终保持"琐碎"引用,本地由数据存储区支持(例如,在留言簿示例中,仅限字符串和长整数).

java google-app-engine google-cloud-datastore

7
推荐指数
1
解决办法
879
查看次数