Locking a table with hibernate
You need to use pessimistic locking, which can be achieved by
setLockMode(String alias, LockMode lockMode)
on the query and use LockMode.UPGRADE
.
However, this will certainly kill scalability and performance if you are doing a lot of access on this table. You are better either using a sequence or another strategy is to create a service to allocate numbers (e.g., an SSB) which grabs 100 numbers at a time, updates the database, and hands them out. That saves you 198 database accesses.
UPDATE:
You will also have to modify your table design slightly. It is better to have a single row with a known ID and to store the number you are incrementing in another column. Then you should update the row rather than deleting the old row and adding a new one. Otherwise, the row locking strategy won't work.
UPDATE2:
OP found that the following worked:
session.get(class.Class, id, lockOption)