This is how i am using the generator:
<id name="id" column="column_name"> <generator class="increment"/> </id> private Integer id;
The behaviour that I am seeing is:
- create the first object
- hibernate assigns id = 1
- delete that object
- shut down the server and restart it (added this after the answer)
- create a second object
- hibernate assignes id = 1
note: I expected the new number to be 2, even though 1 doesnt exist anymore.
I have only tested this using HSQLDB.
Question: Is this expected behaviour?
AFAICT in the source, the next number should be 2 https://github.com/hibernate/hibernate-core/blob/master/hibernate-core/src/main/java/org/hibernate/id/IncrementGenerator.java#L68
Update: As per Ralph's answer, if I skip step 4 (dont shut down the server), it increments correctly. Its because the value gets set to max(id) on start up, and stored in memory after that.