JDO:引用另一个类“拥有”的实体集合

时间:2009-10-08 18:17:34

标签: google-app-engine orm jdo

我的RecipeJDO包含一个列表< IngredientJDO>。 RecipeJDO“拥有”成分。这对我来说已经好几周了。现在我想介绍一个新的类“GroceryListJDO”,它引用了各种食谱所拥有的成分。

当我尝试坚持新的GroceryListJDO时,我得到以下内容:

javax.jdo.JDOException: Duplicate property name: ingredients_id_OWN
NestedThrowables:
org.datanucleus.exceptions.NucleusException: Duplicate property name: ingredients_id_OWN
javax.jdo.JDOException: Duplicate property name: ingredients_id_OWN

似乎RecipeJDOGroceryListJDO之间存在“所有权”问题。

我可能会将GroceryListJDO更改为仅包含一个List<String>,它充当IngredientsJDO的一种外键,但这种方式违背了使用ORM的目的 - 我必须手动获取并附加我的DAO中的成分。

管理需要“附加”到多个容器JDO类的JDO集合的最佳方法是什么?

这是Google App Engine上的JDO,FWIW。

1 个答案:

答案 0 :(得分:1)

显然,这被称为“无主”关系,并且在GAE中为not directly supported。解决方法就是我所担心的:只有一个JDO类可以拥有该集合;引用这些对象的任何其他JDO必须仅保留Keys,并手动管理引用/保存引用的对象。