当前位置: 首页 > 知识库问答 >
问题:

Spring boot jpa标识,新行的ID向前跳10K[重复]

阎啸
2023-03-14

我使用的是spring boot JPA2.1.18。
我的所有模型类都派生自此基类:

@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class) 
public abstract class DbEntity {

   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   protected Long id;

   ....
}

一切都很好,但我面临着一个奇怪的行为,即用于db中新行的ID(我使用的是SqlServer):

正如您所看到的,突然间,ID增加了10000个,我不明白为什么(java代码不可能保留10000个ID,因为我没有批处理)。有什么建议吗?

共有1个答案

姬魁
2023-03-14

这是因为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
 类似资料:
  • 我有一个表,它有一个主键ID列,并设置为每个新条目的增量为1,这是一个相当标准的配置。此表定期更新新记录,每月归档一次到存档表,然后截断。 我的问题不是关于重新播种列(使用DBCC--我知道如何这样做),而是关于如何使用新的ID值重新对现有记录进行编号。我应该使用循环的动态SQL查询(删除记录、插入记录)来执行此操作吗?还是有一些我不知道的SQL Server函数可以自动重新编号ID列?

  • 问题内容: 大家好。我的数据库中有一个表,其中包含约一千条记录。我想重置标识列,以便所有ID都再次按顺序进行。我正在看这个,但我假设它只能在空表上工作 当前表 所需表 提前致谢 问题答案: 最简单的方法是制作当前表的副本,解决所有父代问题,将其删除,然后重命名新表。 您也可以暂时删除并尝试以下操作: 或者,如果您不在乎记录的顺序,则此

  • 请参考:http://www.kancloud.cn/manual/thinkphp/1720

  • 页面跳转 在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的\think\Controller类内置了两个跳转方法success和error,用于页面跳转提示。 使用方法很简单,举例如下: <?php namespace app\index\controller; use app\index\model\User; use t

  • 问题内容: 我在表中有一些数据,看起来大致如下: tickId和timestamp都不是唯一的,但是tickId和timestamp的组合应该是唯一的。 我的表中有一些重复的数据,并且我试图将其删除。但是,我得出的结论是,给定数据的信息不足,无法区分另一行,基本上没有办法删除重复的行之一。我的猜测是,我将需要引入某种身份列,这将有助于我从另一行中识别出一行。 这是正确的吗,还是有某种神奇的方法可以

  • 问题内容: 我想从文件中推断出字段名称。文档说: “如果省略fieldnames参数,则csvfile第一行中的值将用作字段名。” ,但在我的情况下,第一行包含标题,第二行包含名称。 我无法按照Python 3.2的要求在csv.DictReader中跳过一行, 因为在初始化读取器时发生了字段名分配(否则我做错了)。 csvfile(从Excel 2010导出,原始源): 我的代码: 当前结果:

  • 如何更改身份栏? 例如,我有一张表: 我需要随着时间的推移而改变

  • 我有一个iOS应用程序正在使用Facebook&Cognito进行身份验证。我可以使用从Cognito提取的iOS应用程序中的以下AWS凭据调用本地ReST服务: 我希望从AWS凭据中获取当前认知标识,以便将其用作DynamoDB表中的密钥并处理授权(我不想为此使用IAM角色)。我知道我可以从iOS应用程序直接调用DynamoDB,但我不希望我的应用程序直接调用我的数据存储(如果我想更改数据存储,