Reload актуальной версии сущности во избежании OptimisticLockException

Здравствуйте!
На экране редактирования сущности у меня происходит сложная обработка редактируемой сущности, где в отдельных методах приходится делать коммит этой сущности. И соответственно когда я вызываю стандартное действие closeWithCommit() возникает OptimisticLockException.
Отсюда два вопроса:

  1. Как корректно перед сохранением перезагружать актуальный экземпляр редактируемой сущности?
    Такой код не работает:
deliveryPointDc.setItem(dataManager.reload(getEditedEntity(), "edit"));
  1. Можно ли как то сохранять внесенные изменения, которые были записаны ДО коммита и перезагрузки редактируемой сущности? Порядок такой: пользователь открывает экран редактирования сущности - записывает какие то новые значения в поля - затем он нажимает некоторую кнопку которая в бэкграунде коммитит редактируемую сущность. И если после этого вызывать релоад, то первые внесенные изменения в поля редактора затрутся. Сейчас висит лишь идея запоминать эти значения в Map перед перезагрузкой, есть ли вариант проще?

Добрый день!

Вот так:

    Foo reloadedFoo = dataManager.load(Id.of(getEditedEntity())).one();
    fooDc.setItem(dataContext.merge(reloadedFoo));

То есть вы должны сначала влить перезагруженный экземпляр в DataContext экрана, и вернувшийся из merge() объект установить в data container.

Какого-то встроенного во фреймворк способа нет.

2 симпатии