回滚事务仍然会增加 Spring Boot 和 Hibernate 中的主键

Sau*_*rma 4 java spring hibernate spring-boot

我使用 spring boot 和 hibernate 来构建我们的应用程序。对于事务管理,我在 serviceImpl 类上使用 @transaction 它可以正常工作。事务数据正常回滚,但 GenerationType.IDENTITY 或strategy=GenerationType.SEQUENCE 值未回滚。例如,如果表中最后一个插入行是 10,并且假设下一个插入行值为 11,而这次由于某些问题事务会回滚。但如果我们再次插入,则下一行值是 12 而不是 11。为什么会发生这种情况,为什么下一列值不是 11。有什么方法可以获取上一个值。

Tho*_*ets 6

生成的 ID 通常在事务外递增,否则您将阻止所有其他需要插入新行的事务。该机制只需要确保 ID 在所有事务中都是唯一的。