我们正在使用一个spring数据项目,我们有一个mysql数据库。 最近我们在USER表中注意到以下内容:
id | name | pass | email
=====================================
1 John 123 john@gmail.com
2 Joe 456 joe@gmail.com
3 .....
4 ....
6 ...
很明显我们的数据库中缺少id = 5.
可能是什么原因?请记住,我们正在使用@transactional服务和dao。
Spring数据是否可以使用这些跳过的ID创建新条目? (可能配置?)
答案 0 :(得分:1)
id get'保留'当您发出insert
语句时,但执行插入直到提交事务为止;如果在此之前抛出异常,则事务将回滚,不执行插入,因此不使用保留的id。所有这一切都假设您正在使用自动增量。
可能还有其他原因,但特别是这个原因发生在我身上,虽然这对我来说不是一个问题。
编辑:这在Postgres发生在我身上,但我认为它也发生在mysql上;自从我上次使用它已经有一段时间了。
此外,您可以查看您的JPA提供商有关@GeneratedValues