您需要使用悲观锁定,这可以通过
setLockMode(String alias, LockMode lockMode)
关于查询和使用
LockMode.UPGRADE。
请参阅Query.setLockMode
但是,如果您对此表进行大量访问,那么这肯定会破坏可伸缩性和性能。您最好使用序列或另一种策略来创建一个分配数字的服务(例如,SSB),该服务一次可以获取100个数字,更新数据库并将其分发出去。这样可以节省198次数据库访问。
更新:
您还必须稍微修改表格设计。最好有一个具有已知ID的单行,然后将要递增的数字存储在另一列中。然后,您应该更新该行,而不是删除旧行并添加新行。否则,行锁定策略将不起作用。
UPDATE2:
OP发现以下工作有效:
session.get(class.Class, id, lockOption)



