【问题标题】:GAE one to many Relationship JDO ExampleGAE 一对多关系 JDO 示例
【发布时间】:2013-11-11 03:56:36
【问题描述】:

我阅读了有关 JDO 的 GAE 文档,但没有找到适合我的场景的示例。请帮帮我。

我有两个 JDO 类,例如 AB"A" 类与"B" 具有一对多的关系。这种关系是未欠的,也是不依赖的。 "A""B" 类具有以下结构(为简单起见,我不使用注释)

class A {

private String name;
private String id; // primary Key
private List<B> b;

..... getter setter
}

class B {

private Key key; // primary Key
private String id; // this is the attribute of the Class A
private String someData;

}

现在我的情况是,首先我一个一个地创建类"A" 对象,并使用持久管理器将其保存到数据存储中。对于这个存储“List&lt;B&gt; b”将是空的,因为我没有数据。

之后,假设我提供了一个表单,该表单具有两个字段,一个用于“A"”类的 "id" 属性,另一个用于“someData”属性。在此用户中,提供其中一个的"id" "A" 类的存储对象。当用户提交结果时,我必须创建一个 "B" 类对象并将其保存到数据存储中,并且还必须将其添加到其对应的 list of B"A" 对象中。我希望你明白我想做什么。

现在我的问题是,我必须使用什么方法来维护 JDO 类的这种一对多关系。要么我必须首先根据表单中提供的"id" 检索类"A" 对象,在获取对象后我得到"list of B" 类对象并在列表中添加"B" 类对象,然后保存类"A" 对象(当对象附加到 PM 时,它会自动保存)或其他方法是我只创建类 "B" 对象并使用 PM 将其保存到数据存储中。

如果只是创建B 类对象并将其保存到数据存储中,则该关系是持久的。当我得到 A 类对象时,我很简单,"list of B" 类对象是否具有链接到类“A”对象的所有对象(因为 B 类具有属性,这是类 A 的主键)

谢谢

【问题讨论】:

    标签: java class google-app-engine persistence jdo


    【解决方案1】:

    在我看来,Java | Storing Data | Datastore | JDO | Entity Relationships in JDO | Unowned Relationships 的 GAE/J 文档应该对您有所帮助。

    因为AB 之间的关系是无主的,所以所有AB 实例都位于不同的实体组中。因此,您必须执行两个单独的持久化操作来创建/更新/删除B 的实例并相应地更新A 的相关实例。

    这有帮助吗?

    【讨论】:

      猜你喜欢
      • 2012-11-22
      • 2011-08-24
      • 1970-01-01
      • 2013-04-17
      • 2011-01-12
      • 2015-03-15
      • 2010-12-30
      • 2014-03-17
      • 2011-02-24
      相关资源
      最近更新 更多