У меня есть набор сущностей, которые соединяются друг с другом, образуя цикл, т.е. родительский объект P имеет два отношения "один ко многим" с двумя дочерними объектами C1 и C2, и каждый из них имеет отношение "один ко многим" с другим объектом A. Объект A реализует ассоциацию этих объектов (C1, C2) и определяет атрибуты отношений (это не только таблица соединений). Все отношения являются судоходными в обоих направлениях.
Из этого дизайна возникает следующий вопрос: какова должна быть стратегия каскада, чтобы сущность A могла быть сохранена/объединена, учитывая, что вы всегда вызываете операции менеджера сущностей в корневой объект P? Должен ли A быть каскадом, доступным с обоих путей?
Соображения: Похоже, что если приложение решит предоставить только один каскадный путь, могут возникнуть сценарии, которые вызывают исключение TransientObjectException. Если он предоставляет оба пути, то эти пути должны выполнить полный цикл, так как, например, C1 можно было бы попытаться сохранить через A.
Версии: JPA 2.0, Hibernate core 4.1.7, hibernate-jpa-2.0-api 1.0.1