Работа с БД: Порядок выполнения операций из контекста

Добрый день!

Jmix version: 1.5.3

В экране редактирования сущности в dataContext экрана добавляются операции по другим сущностям.
Например:

dataContext.create(Entity1.class);
dataContext.remove(entity2);
dataContext.remove(entity3);

При сохранении будет ли сохраняться порядок действий?

Если - Нет, то как сохранить порядок?

Здравствуйте, Олег!

Порядок действий при коммите в экране редактирования не сохраняется. Все измененные сущности в конце концов помещаются в Set-ы внутри SaveContext, который сохраняется через DataManager.

Для управления процессом коммита можно задать свой commitDelegate, в котором вручную сохранять сущности в нужном порядке (не забыв обернуть все вызовы dataManager.save(..), dataManager.remove(..) в транзакцию):

    @Subscribe
    public void onInit(InitEvent event) {
        getScreenData().getDataContext().setCommitDelegate(saveContext -> {
            // своя логика сохранения
            
            // или
            
            // поведение, которое было бы при отсутствии commitDelegate:
            return dataManager.save(saveContext);
        });
    }

С уважением,
Дмитрий