了解 JPA 序列生成器

2024-04-22

我正在使用 spring data JPA 的序列生成器将主键分配给实体。

模型包含:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_post")
@SequenceGenerator(name = "seq_post", allocationSize = 5)
private Long id;

对应的序列定义(对于SQL Server DB):

CREATE SEQUENCE dbo.seq_post START WITH 1 INCREMENT BY 5;

因为我想从 100 而不是 1 开始 ids,所以我将 sql 脚本更新为

CREATE SEQUENCE dbo.seq_post START WITH 100 INCREMENT BY 5;

然后我遇到了上面提到的问题here https://stackoverflow.com/questions/34044928/hibernate-5-sequence-generate-issue/34047121。我通过那里提到的解决方案修复了它。

这让我想知道,当我希望数据库序列从1开始时,为什么这个问题不会发生?根据提到的答案here https://stackoverflow.com/a/34047121/13866126我希望 ids 不会从 1 开始,但这并没有发生。为什么会这样?


首先检查您是否设置了属性hibernate.id.new_generator_mappings to true as 推荐的 http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-mapping-identifier

比你在调整 the allocationSize与序列INCREMENT BY.

如果你想start the ID对于特定值,它似乎遵循以下规则:

  • 首先one将序列设置为START WITH 1(这个好像是个例外)

  • 首先X > 1设置顺序START WITH X + 50(其实也是一样的X < 1)

例如首先5000使用默认的allocationSize of 50定义序列如下

create sequence sub_seq
       START WITH 5050
       INCREMENT BY 50
       NOCACHE;

请注意,我正在使用NOCACHE选项,因为我认为 Hibernate 是唯一用户这个序列,所以caching并没有真正的意义(实际上replaced与分配大小。

你也loose会话之间大约。的 1/2allocationSizeof the ID并且您不希望增加它而导致缓存的额外损失IDs.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 JPA 序列生成器 的相关文章

随机推荐

  • 使用矢量化为 iPhone 编译 Eigen 库

    我正在努力为 iPhone 4 编译 Eigen 库 该库具有带有 armv7 指令集的 ARM 处理器 到目前为止 当我指定预处理器定义 EIGEN DONT VECTORIZE 时 一切正常 但由于一些性能问题 我想使用armv7优化的
  • 删除 IntelliJ 中的“运行任何内容”历史记录

    我正在使用 IntelliJ 2019 3 我想删除 Run Anything 历史记录中的 执行 Maven 目标 我怎样才能做到这一点 我找到的所有答案都是删除workspace xml 但这不适用于此版本 One other way
  • 如何分离运行容器并在退出时自动删除它们?

    Why are d and rmDocker 中的争论有冲突吗 docker run d rm image Conflicting options rm and d 我有许多运行单元 功能 集成测试的容器 Docker 容器启动 运行测试
  • 如何在项目中生成jar和war

    我们有两个不同的项目 并且两个项目中的控制器几乎相同 项目 A 内部有控制器 所以为其引发战争不是问题 但是项目 B 需要项目 A 控制器的控制器 jar 谁能告诉我如何从项目 A 的控制器生成可以在项目 B 中使用的 jar 文件 这种情
  • X-FRAME-OPTIONS: DENY 通过 nginx 来自 Django 站点在哪里?

    我的 Django 网站使用django summernote https github com summernote django summernote在 iframe 中 并抛出此错误 多个具有冲突值的 X Frame Options
  • C# 获取分配总数

    有没有办法获得分配总数 注意 分配数量 而不是分配的字节数 它可以是当前线程的 也可以是全局的 以更容易的为准 我想检查特定函数分配了多少个对象 虽然我了解 调试 gt 性能分析器 Alt F2 但我希望能够从程序内部以编程方式执行此操作
  • 允许 PDFium 支持 x86 和 x64

    我构建了一个 WinForms 应用程序 它使用 PDFium 来打印 PDF 文档 我从 NuGet 安装了 PDFium 它在我的项目中创建了两个子文件夹 x86 和 x64 正如预期的那样 每个子文件夹中都包含相关版本的 pdfium
  • 将均匀分布转换为正态分布

    如何将均匀分布 大多数随机数生成器产生的结果 例如在 0 0 和 1 0 之间 转换为正态分布 如果我想要我选择的平均值和标准差怎么办 方法有很多 Do not使用博克斯穆勒 特别是当你画很多高斯数时 Box Muller 产生的结果被限制
  • Django:模型类 user.models.Users 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

    姜戈版本 2 0蟒蛇 3 6 5错误 模型类 user models Users 未声明显式 app label 并且不在 INSTALLED APPS 中的应用程序中 我刚刚将模型用户添加到我的视图中 base py DJANGO APP
  • 在SQL Server 2012 TSQL中,使用XML RAW、XML AUTO和XML PATH有什么区别

    正如标题所示 欢迎所有开放的思想 我在我的电脑上测试了一下 输出似乎是一样的 例如 USE BOB DATABASE SELECT ID Name First Name Last Name FROM DBO T User FOR XML A
  • 生成字符串所有组合的算法

    我在网上找到了一个链接 其中显示了生成字符串的所有组合的算法 http www mytechinterviews com combinations of a string http www mytechinterviews com comb
  • 为什么选择源进行 SQL 架构比较会导致 VS2012 崩溃?

    似乎没有任何原因 选择 SQL gt 架构比较 gt 新架构比较 然后尝试 选择源 会导致 Visual Studio 2012 崩溃 几个月来它一直按预期工作 除了尝试重新安装之外还有其他可能的修复方法吗 注意 尝试在 Visual St
  • 如何将数据从servlet传递到android应用程序

    I have a form in android upon submit im inserting it into database using servlet i have to show to user that form was in
  • 如何在JavaScript中计算3点之间的角度? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想在 JavaScript 中获取 3 点之间的角度 如果我有积分A x1 y1 B x2 y2 and C x3 y3 我想得到由线A
  • Nightwatch.js 始终返回退出代码 1

    我尝试将 Nightwatch js 测试集成到 Jenkins 作业中 如果测试失败 我希望 Jenkins 构建失败 如果所有测试都通过 我希望构建通过 但我认识到夜巡总是返回exit code 1 测试通过或失败并不重要 但我期望ex
  • Python 转换日期格式

    给定一个像这样的字符串 2020 08 14 我如何将其转换为 14 August 2020 使用Python 3 您可以使用datetime用于重新格式化日期字符串的模块 使用strptime你可以从一个字符串读入一个datetime对象
  • 如何用 POST 替换 window.open(...)

    我目前有一些运行的代码window open urlWithGetParams 线 据我所知 这将迫使我使用GET要求 我想通过 POST 请求来完成此操作 有解决方法吗 我没有结婚window open 任何一个 我愿意接受任何允许我通过
  • 我可以换行 img 替代文本吗?

    我有一个由 css 样式设置为 100x75 的图像 当它不加载时 替代文本会加载到空间中 但会将容器扩展到超过 100 像素宽度 我怎样才能防止这种情况发生 要么把它剪掉 要么把它包起来 好吧 我在某种程度上明白了 我只是将图像包装在相同
  • QUERY Google Sheets 函数中同一字符串中的引号和撇号

    我想知道如何处理这样的查询 假设电子表格的单元格 A2 中包含以下文本 Case Bakers Flats 12 White Flour Tortillas 10 12ct 并需要将以下公式代入B2 QUERY importrange KE
  • 了解 JPA 序列生成器

    我正在使用 spring data JPA 的序列生成器将主键分配给实体 模型包含 Id GeneratedValue strategy GenerationType SEQUENCE generator seq post Sequence