Наследование — отношения БД

Я использую Cayenne 4.1 и хочу использовать наследование одной таблицы, но у меня проблема в том, что при использовании средства моделирования отношения БД, которые я создал в средстве моделирования, всегда удаляются :-/ Подробно: у меня есть таблица и объект фото (суперкласс), у меня есть подклассы photoA и photoB, на фото у меня есть поле (квалификатор), которое имеет идентификатор класса A или класса B, так как невозможно поддерживать такое амбивалентное отношение непосредственно в БД, я поддерживаю отношение в средстве моделирования, поэтому я могу использовать его в классе сущностей, все работает нормально, за исключением того, что когда я запускаю функцию схемы базы данных реинжиниринга, отношения удаляются: -/

... но, возможно, я неправильно понял концепцию :-(

бр Маркус


person Meex    schedule 04.12.2019    source источник
comment
Не могли бы вы предоставить больше информации об отношениях, которые вы создаете вручную? Может быть, упрощенный XML вашей карты данных? Используется ли он как-то в качестве квалификатора для наследования? Или это обычная связь, которая должна указывать на объект A или B и не является непосредственной частью вашей настройки наследования?   -  person Nikita    schedule 11.12.2019
comment
Привет, вот соответствующая часть XML controlc.com/3b1ae16c   -  person Meex    schedule 12.12.2019


Ответы (1)


Вы все сделали правильно, вы просто столкнулись с ограничением функциональности импорта базы данных Cayenne. Он позволяет настраивать только объектный слой, а не БД, поскольку он не отслеживает изменения, а просто сравнивает вашу модель с состоянием БД при каждом запуске.

Вот что вы можете с этим сделать:

  • Не используйте импорт БД для части, которую необходимо настроить. Это означает, что вам нужно поддерживать свою модель вручную. Это может быть сложно, так как вам также нужно исключить все связанные части вашей модели (и это может быть вся ваша модель). Не очень отличный вариант.

  • Или лучший вариант. Вы можете попробовать переключиться с импорта БД Modeler на плагин Cayenne Maven (или Gradle). Он поддерживает исключение отношений по имени, его не так просто настроить, как Modeler, но функционально он на одном уровне. Вот несколько ссылок на соответствующую документацию: плагин Maven учебник, исключение отношений.

person Nikita    schedule 20.12.2019