JDO架构:一对多关系和级联删除

时间:2010-06-08 23:24:47

标签: java google-app-engine persistence jdo object-oriented-database

我是面向对象数据库设计的新手,我正在尝试理解如何在JDO for google应用引擎中构建我的类,特别是一对多的关系。

假设我正在建立一个百货商店的结构,那里有很多部门,每个部门都有很多产品。所以我想要一个名为Department的类,其变量是Product类的列表。

@PersistenceCapable 
public class Department { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private String deptID; 

    @Persistent 
    private String departmentName; 

    @Persistent 
    private List<Product> products; 

}

@PersistenceCapable 
public class Product { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private String productID; 

    @Persistent 
    private String productName; 

}

但是一个产品可以在多个部门(就像电池可以用于电子产品和家用电器)。那么下一个问题是,我如何不在OOD世界中复制数据,并且在众多部门中只有一份产品数据?接下来的问题是,假设我删除了一个特定的产品,每个部门如何知道它已被删除?

1 个答案:

答案 0 :(得分:2)

您需要将以下内容添加到Department类的相关成员中。另请参阅App Engine documentation中有关此内容的部分。

@Persistent
@Element(dependent = "true")
private List<Product> products;