Я делаю обновление hibernate в моем приложении с 4.3.7 до 5.3.7. Я начал испытывать странное поведение во время операции session.flush () .
В одной из моих транзакций у меня более 990 объектов.Все объекты имеют версии с оптимистической блокировкой (@Version).
Некоторые объекты во время очистки завершаются с исключением нулевого указателя.Это происходит во время операции увеличения версии.Только объекты с Status.SAVING (состояние EntityEntry взято из persistenceContext.reentrantSafeEntityEntries ()) дает мне эту ошибку (номер версии в EntityEntry равен нулю)
Я запустил приложение со старой версиейСнова спящий режим и все объекты в постоянном контексте имели Status.MANAGED до session.flush ().Поэтому я предполагаю, что проблемы заключаются в правильной обработке сущностей с EntityEntry с Status.SAVING.
Более того, я не понимаю, почему раньше все объекты имели EntityEntry с Status.MANAGED, а теперь, после перехода на hibernate 5.3.7некоторые из них имеют EntityEntry с Status.SAVING.В hibernate 4.3.7 версии EntityEntry не всегда устанавливались, но у меня никогда не было NPE.