Session.flush () вызывает org.hibernate.StaleStateException: пакетное обновление вернуло неожиданное количество строк после обновления: 1 фактическое количество строк: 0 ожидается: 1 - PullRequest
0 голосов
/ 24 июня 2019

У меня есть серверное веб-приложение Java, которое только что начало выдавать ошибку после какого-то обновления базы данных.

Мне удалось выделить код в одну строку, в которой переменная Sessionсбрасывается:

Session session=getSession();

session.saveOrUpdate(parm);

session.flush();  //This is where it errors

И выдает эту ошибку:

ОШИБКА AbstractFlushingEventListener Не удалось синхронизировать состояние базы данных с сеансом

org.hibernate.StaleStateException: пакетное обновление вернуло неожиданную строкуколичество обновлений: 1 фактическое количество строк: 0 ожидается: 1

Код не изменился за год;он просто начал выдавать эту ошибку.

Есть предложения?

Спасибо

1 Ответ

0 голосов
/ 24 июня 2019

Эта ошибка обычно возникает, когда гибернация не может найти все строки, которые нужно обновить. Это означает, что когда вы пытаетесь обновить некоторые объекты, которые были извлечены из БД, они больше не существуют (или вообще никогда не существовали).

Это может быть связано с тем, что другой поток их удаляет или что режим изоляции БД установлен на read_uncommited, и поэтому строки, созданные другой транзакцией, не удалось сохранить (из-за сбоя транзакции) и больше не существуют.

ref: https://stackoverflow.com/questions/21625059/org-hibernate-stalestateexception-batch-update-returned-unexpected-row-count-fr

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...