2011-03-15 106 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