JDO: ссылка на коллекцию сущностей, "принадлежащих" другому классу - PullRequest
1 голос
/ 08 октября 2009

У меня есть RecipeJDO , который содержит список <<a href="http://pastebin.com/f168e661a" rel="nofollow noreferrer"> 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

Похоже, что существует проблема "владения" ингредиентами между RecipeJDO и GroceryListJDO.

Я мог бы, вероятно, изменить GroceryListJDO, чтобы он просто содержал List<String>, который действует как своего рода внешний ключ к IngredientsJDO, но такой вид поражает цель использования ORM - мне придется вручную извлекать и прикреплять ингредиенты в моем DAO.

Каков наилучший способ управления коллекциями JDO, которые необходимо "прикрепить" к нескольким классам JDO контейнера?

Это с JDO на Google App Engine, FWIW.

1 Ответ

1 голос
/ 09 октября 2009

По-видимому, это называется "неизвестным" отношением, и напрямую не поддерживается в GAE. Я боялся обходного пути: только один класс JDO может владеть коллекцией; любые другие JDO, которые ссылаются на эти объекты, должны сохраняться только Keys, и управлять извлечением / сохранением ссылочных объектов вручную.

...