У меня есть файл модели, код которого:Получение HibernateOptimisticLocking Исключение при сохранении объекта
Signature.java
public class Signature implements Serializable {
private String id;
private int version;
private byte[] signatureImage;
private String signatureImageName;
private String name;
private String title;
// the getters setters methods
}
Вот в этом объекте я получаю signatureImage
от JSP с использованием MultipartFile
, а затем сохраняя байты в этом поле. Я спасаю этот объект из моего контроллера и daohibernate код выглядит следующим образом:
Session session = getSessionFactory().getCurrentSession();
session.saveOrUpdate(signature);
Сейчас я получаю сообщение об ошибке:
: При обработке запроса: -> HibernateOptimisticLockingFailureException, е :: org.springframework .orm.hibernate4.HibernateOptimisticLockingFailureException: объект класса com.model.Signature с идентификатором []: сбой оптимистической блокировки; вложенное исключение org.hibernate.StaleObjectStateException: Строка была обновлена или удалена другой транзакция (или отображение неспасенного значения было неправильным): [com.model.Signature #]
Теперь это один вызов к saveOrUpdate
запросу нет потоков, то и я получаю эту ошибку.
Это как раз то, что он говорит: некоторые другие службы изменили эту запись в базе данных. Поэтому информация о версии не подходит, и ваше обновление отклонено. Вам придется проанализировать, что изменило эту запись. –
SIr, мое обновление работает нормально. Когда я обновляю запись, ошибка не возникает, когда я сохраняю новую запись, тогда она показывает эту ошибку. Фактически, я также выполнил операцию удаления в этой таблице. Так может ли эта операция удаления вызвать эту ошибку? –
Возможно, вы используете первичный ключ в своей новой записи, который уже существует? –