Hibernate Несогласованный сгенерированный идентификатор

У меня есть основной метод, который последовательно вызывает два веб-сервиса. Первый веб-сервис сначала вставляет данные в таблицу запросов, которые имеют первичный ключ, который генерируется последовательно с использованием режима гибернации. Эта таблица также имеет одно поле состояния, исходное состояние которого "Получено". Затем это первый веб-сервис, обработайте этот запрос и затем измените статус на "Обработано".

Теперь основной метод вызывает второй веб-сервис для получения запроса, статус которого "Обработан". Поскольку вызов из метода main является последовательным, второй вызов веб-службы может содержать только одну запись, статус которой "Обработан". После этого основной метод засыпает на 5 секунд и процесс повторяется бесконечно. Также, когда я получаю эту запись, я меняю статус на "завершен".

Также веб-сервис осуществляет удаленный доступ к БД. Данные также состоят из одного requestId (это не первичный ключ).

Таким образом, проблема в том, что когда этот процесс продолжается в течение 1 часа, я вижу, что есть некоторая несогласованность в запросе, который я отправляю и получаю. Эти идентификаторы не совпадают. И я вижу, что есть несколько записей, чей статус остается Processed, Я использовал генератор идентификаторов гибернации в качестве приращения, но при тестировании этой системы в нескольких кластерах я столкнулся с исключением uniqueConstraint. Поэтому я начал использовать генератор последовательностей, и теперь столкнулся с этой проблемой.

Нужно ли использовать flush после коммита?

0 ответов

Другие вопросы по тегам