Добрый день!
Есть три сущности: ServiceOrder, ServiceOrderItem, WorkProcess.
ServiceOrder связана c ServiceOrderItem как OneToMany - ServiceOrder содержить коллекцию ServiceOrderItem. ServiceOrderItem содержит ссылку на WorkProcess.
Есть два экрана ServiceOrderBrowse и ServiceOrderEdit.
ServiceOrderEdit открывается из ServiceOrderBrowse через фасет следующим образом:
serviceOrderEditorScreen.setEditMode(EditMode.CREATE);
serviceOrderEditorScreen.show().init(facility, tariffingShiftType);
facility, tariffingShiftType - это сущности, которые используются для выборки из WorkProcess
При открытии экрана на создание нужно сделать выборку из WorkProcess, создать коллекцию ServiceOrderItem и добавить ее ServiceOrder. Так же добавить ее в таблицу для того, чтобы пользователь мог отредактировать другие поля сущеностей ServiceOrderItem.
Генерация:
List<WorkProcess> workProcesses = serviceOrderService.getWorkProcessListByFacilityAndShiftType(facility, tariffingShiftType);
List<ServiceOrderItem> serviceOrderItems = new ArrayList<>();
for (WorkProcess workProcess : workProcesses ) {
ServiceOrderItem serviceOrderItem = new ServiceOrderItem();
serviceOrderItem.setServiceOrder(this.getEditedEntity());
serviceOrderItem.setWorkProcess(workProcess);
serviceOrderItems.add(serviceOrderItem);
}
В таблицу пытаюсь добавить так:
@Inject
CollectionPropertyContainer serviceOrderItemsDc;
serviceOrderItemsDc.setItems(serviceOrderItems);
Но строки не добавляются.
В ServiceOrder добавляю
this.getEditedEntity().setServiceOrderItems(serviceOrderItems);
При попытке сохранения появляется ошибка.
IllegalStateException: An attempt to save an entity with reference to some not persisted entity. All newly created entities must be saved in the same transaction. Put all these objects to the CommitContext before commit.
Подскажите, пожалуйста, как правильно сгенерировать и добавить коллекцию сущностей в основную сущность экрана и в таблицу?
Заранее спасибо!