Я ищу совет или альтернативу для моделирования следующих отношений.
Рассмотрим:
и применение указанных отношений:
г. У военачальника есть много вариантов, однако, если ресурс исчезает, его выбор удаляется каскадом. Теперь огнестрельное оружие и пули - оба ресурса. Огнестрельное оружие может использовать много видов пуль (FMJ, HP, P +, взрывчатка? ..). Пули также могут быть использованы в различных видах огнестрельного оружия (АК, М60, М14). Поэтому я также хотел бы убедиться, что если Пуля больше не будет доступна, вышеупомянутые отношения с огнестрельным оружием больше не будут существовать, и наоборот.
Надеюсь, мой фэнтезийный пример получения перка для полевых командиров рисует ясную картину.
Ресурсы являются абстрактными. Хотя они существуют в хранилище данных для целей ограничения, я бы никогда не создал экземпляр общего ресурса. И у меня могло быть намного больше типов (приспешников, вертолетов, оборотней, ...), каждый с совершенно различными атрибутами. Они существуют в первом случае, чтобы избежать полиморфной ситуации с внешним ключом с ChoicesEarned.
Вы заметите, что Тип ресурса 2 не содержит Set<Type1>
, а просто ссылку на (Long)ResourceId
некоторого Огнестрельного оружия. (Пули не могут держать огнестрельное оружие, даже если верно обратное, и ради аргумента, да, это волшебное оружие может стрелять многими типами пуль).
Почему у меня есть коллекции идентификаторов, а не объектов? Что ж, если я добавлю тип маркера, представляется более эффективным добавить ссылку на Id в таблицу ассоциации, чем извлечь огнестрельное оружие и «добавить» к нему объект маркера. Таким образом, когда я получаю объект огнестрельного оружия, я также не получаю все пули, которые он может использовать. (Меньше накладных расходов памяти для всех этих объектов, вместо этого просто набор идентификаторов).
Так в чем же был вопрос?:
1.) Это не похоже на необычную модель. Есть ли лучший способ его моделировать?
2.) Я еретик ООП, чтобы использовать ссылки вместо объектов? Должен ли я просто использовать объекты?
Моя главная проблема
3.) Если 1 и 2 не так, как я могу смоделировать это в JDO? Я экспериментировал пару дней, и проблема, с которой я продолжаю сталкиваться, заключается в том, что JDO не может распознать связь между наборами длинных. Каждый найденный мной пример показывает использование объектов Composition, а не ссылок на атрибуты M-N. Если я не укажу другой персистентный объект, то может возникнуть путаница. Атрибут сохраняемого объекта не работает.
UPDATE:
Сегодня я получил ответ от форума DataNucleus, Вот ветка
Проблема была связана с моим вопросом № 2 выше. Моя попытка сэкономить часть памяти была источником моих трудностей. Я не могу установить связь между коллекциями, чьи типы элементов не являются другими постоянными классами без фальсификации присяжных. Мне нужно немного изменить дизайн.
РЕШЕНИЕ:
Смотрите мой ответ ниже
Я ценю вклад каждого.