Трябва да използвате песимистично заключване, което може да се постигне чрез
setLockMode(String alias, LockMode lockMode)
на заявката и използвайте LockMode.UPGRADE
.
Вижте Query.setLockMode
Това обаче със сигурност ще убие мащабируемостта и производителността, ако правите много достъп до тази маса. По-добре е да използвате последователност или друга стратегия е да създадете услуга за разпределяне на номера (например SSB), която взема 100 номера наведнъж, актуализира базата данни и ги раздава. Това ви спестява 198 достъпа до базата данни.
АКТУАЛИЗАЦИЯ:
Също така ще трябва леко да промените дизайна на вашата маса. По-добре е да имате един ред с известен идентификатор и да съхранявате номера, който увеличавате в друга колона. След това трябва да актуализирате реда, вместо да изтривате стария ред и да добавяте нов. В противен случай стратегията за заключване на редове няма да работи.
АКТУАЛИЗАЦИЯ 2:
OP установи, че следното работи:
session.get(class.Class, id, lockOption)