问题描述
我使用的是 Spring Boot JPA 2.1.18。
我所有的模型类都派生自这个基类:
@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class DbEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Long id;
....
}
一切正常,但我遇到了一个奇怪的行为,用于数据库中的新行的 ID(我使用的是 sqlServer):
如您所见,id 突然向前跳了 10000,我不明白为什么(java 代码不可能保留 10000 id,因为我没有批处理)。有什么建议吗?
解决方法
这是因为 SQL Server 中有一个名为 IDENTITY_CACHE 的选项,看看微软的这个页面,它解释了更多
要禁用它,请在您的数据库下运行以下命令
USE DatabaseName
GO
ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF
GO
请注意,这可能会降低性能