0

我正在使用 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,因为我没有批处理)。有什么建议么?

4

1 回答 1

0

这是因为 SQL Server 中有一个名为 IDENTITY_CACHE 的选项,请查看 Microsoft 的此页面,其中解释了更多信息

https://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-scoped-configuration-transact-sql?view=sql-server-ver15

要禁用它,请在您的数据库下运行以下命令

USE DatabaseName
GO
ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF
GO

请注意,这可能会降低性能

于 2021-07-16T09:30:16.380 回答