2011-03-15 87 views
0

我想为我的食谱实现一个简单的分类系统。JDO关系 - App Engine

这里是我的食谱实体:

@PersistenceCapable 
public class Recipe { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 
    @Persistent 
    private List<Category> categories; 

    public Recipe(List<Category> categories) { 
     this.categories = categories; 
    } 
    ... 
} 

而且我类别实体:

@PersistenceCapable 
public class Category { 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 
    @Persistent 
    private String name; 

    public Category(String name) { 
     this.name = name; 
    } 
    ... 
} 

现在你可以看到关联很简单。当我创建一个Recipe时,我确保我用类别列表构造它。这很棒。在我的网站上,我可以迭代一个Recipe列表(或其他),然后只需执行.getCategories()即可检索我需要的类别。

但是,假设我想检索数据存储中的所有类别,并且当我点击一个类别时,我希望能够检索该类别的所有配方。最简单的方法是什么?

显示我拥有的所有类别:select from Category.class group by name。 但是,如何检索给定类别下的所有食谱?我的设计是否对JDO有缺陷?

回答

2

选择mydomain.Recipe类别为:类别

不知道这是什么“有缺陷的JDO”的想法... JDO只需提供透明的持久性,并让你想你设计类。

+0

'WHERE category =:category' - 我的'Recipe'类没有'category'字段。 – 2011-03-15 07:50:01

+0

从mydomain.Recipe中选择WHERE categories.contains(:category)返回包含特定Category的所有Recipes。 – DataNucleus 2011-03-15 09:52:20

+0

好的,但':category'是什么?一个类别对象?类别密钥? – 2011-03-15 11:19:53

相关问题