Google App Engine java将jpa@OneToMany/@ManyToOne替换为objectify
我有一个现有的GoogleAppEngineJava应用程序运行jpa,现在我正尝试将其移动到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
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.VObjectify使用不同于关系数据存储和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);