In used query to create derby database table consist of primary column auto increment.
CREATE TABLE \\\"table\\\" (\\n\"
+ \" \\\"id\\\" INTEGER
This is due to pre-allocation of values for auto-increment columns. Derby being an in-memory database, caches auto-increment values when the database is first loaded into the memory. Then, future values of the auto-increment columns are generated using the cache instead of querying the database again and again. If the database is not shut down properly, unused values from the cache are lost forever.
You have two options to address this:
;shutdown=true
to the JDBC URL. This will shut the database down when the application ends.1
(its default value is 100
). This will ensure that the column value is never cached.Note that most databases behave similarly for sequences. For example, H2 has the exact same behaviour but uses a cache size of 32
instead of 100
like Derby does.