У меня есть таблица базы данных, которая имеет уникальное ограничение, определенное для одного из ее столбцов.У меня также есть система обработки сообщений с несколькими потоками.Поскольку сообщения используются, могут быть случаи, когда два сообщения содержат один и тот же объект с одинаковым значением (значением столбца, для которого определено уникальное ограничение).Таким образом, в коде сервисный уровень сначала запрашивает базу данных, используя это уникальное поле (через именованный запрос гибернации), чтобы проверить, существуют ли какие-либо записи первыми.Если нет, то он вставляет новую запись.Если запись с этим уникальным полем уже существует, вместо вставки записи она обновляет ее, а также вставляет дочернюю запись в другую таблицу.
Я сталкиваюсь с проблемой, при которой второй поток считает, что записьеще не существует, поэтому он пытается вставить его. Однако к этому времени первый поток уже успешно вставил запись.Таким образом, исключение возникает из-за нарушения уникального ограничения.Можете ли вы помочь, как лучше всего справиться с подобной ситуацией, используя решение hibernate / oracle?Нужны ли какие-то варианты блокировки?Спасибо.