Рассмотрим сценарий: Db-транзакция, включающая более одной строки из разных таблиц с контролем версий.
Например: A shopLists и products.Где shopList может содержать товары (с их количеством в shoplist), а товары имеют текущий запас.
Когда я вставляю или редактируешь shopList, я хочу, чтобы запас этих товаров в shopList обновлялся, чтобы сохранитьконсистент запаса.
Для этого я открываю транзакцию, вставляю / обновляю shopList, обновляю запасы для каждого продукта (применяем дельта) и затем фиксирую транзакцию.Ничего страшного до сих пор.
Тем не менее, другой пользователь мог обновить один или несколько общих продуктов.Или даже обновил сам shopList.В обоих случаях я получаю исключение StaleObjectStateException при совершении транзакции.
Вопрос: есть ли способ определить, какая таблица вызвала исключение StaleObjectStateException?
В случае, если продукт вызвал исключение,может обновить все включенные продукты из БД, а затем повторно применить дельты акций.И это нормально.В случае, если shopList вызвал исключение, было бы лучше просто сообщить о проблеме пользователю, чтобы он мог начать все сначала.
Большое спасибо за вашу помощь.