Google App Engine java将jpa@OneToMany/@ManyToOne替换为objectify

Google App Engine java将jpa@OneToMany/@ManyToOne替换为objectify,java,google-app-engine,objectify,Java,Google App Engine,Objectify,我有一个现有的GoogleAppEngineJava应用程序运行jpa,现在我正尝试将其移动到objectify,以实现许多不同的目的 当前应用程序具有以下实体表示形式 Class Parent{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Key key; @OneToMany(cascade=CascadeType.ALL, mappedBy="parent") pr

我有一个现有的GoogleAppEngineJava应用程序运行jpa,现在我正尝试将其移动到objectify,以实现许多不同的目的

当前应用程序具有以下实体表示形式

Class Parent{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Key key;

    @OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
    private List<Child> childs = null;
}

Class Child{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Key key;

    @ManyToOne  
    private Parent parent;

}
类父类{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私钥;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“parent”)
私有列表childs=null;
}
班童{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私钥;
@许多酮
私人家长;
}
如何在Objectify中获得上述表示?我正在使用objectify4。
我见过@Parent,但在获取父实体时似乎不可能直接加载子实体列表

谢谢

Ramesh.V

Objectify使用不同于关系数据存储和ORM的存储。关系是使用
s构建的,不会自动加载。您可以阅读Objectify中的关系建模。
@Parent
关系是且不是与1:n或n:m关系相关的关系

所以基本上你有

class Parent {
    Key<Child>[] childs;
}

class Child {
    Key<Parent> parent;
}

没有延迟加载的集合。如果你想构造一组对象,你需要明确地去做。

我找到了解决我自己问题的方法。这是代码


感谢您的回复,是否可以从父级获取子实体,而无需在父级中存储子键/引用。关联由
表示,因此您需要在
父级
子级
中使用它们。如果两者都有,则会创建一个双向关联,这很难维护,而且通常不是很有用。您可以在
Parent
中放开
数组。然后,您只需要Objectify的过滤方法就可以获得所有具有特定父对象的子对象。如果您有大量的子项,这些子项应该通过某些条件或分页进行进一步筛选,那么这一点尤其有用。但是,如果不在父项或子项中存储密钥,JPA是如何工作的呢?我现有的GAE java应用程序使用JPA,我看到数据存储没有任何键存储在子级或父级中。并且它只有父子关系,父级或子级中都没有存储键。我现在所做的更改不应影响现有数据库。我该怎么做呢。谢谢你的详细解释。
Parent aParent = ofy.get(aChild.parent);