Hibernate 5 序列生成问题

2023-12-11

我正在从 3 迁移到 hibernate 5。我发现序列生成器在 Hibernate 5 中无法正常工作。我用最小值 1000 定义了序列并递增 1。但是当我尝试创建新的实体记录时,我看到插入的记录的 id 为 951。看起来 id 与实际序列的下一个值减去 50。在我的例子中,ID 应该是 1000。

请告诉我任何帮助。

这是我的实体和序列:

Entity:

@Entity
@Table(name = "SOME TABLE")
public class Group {

  @Id
  @Column(name = "id")
  @SequenceGenerator(name = "name",  sequenceName ="SEQ_name" )
  @GeneratedValue(strategy = GenerationType.AUTO, generator="name")
  private Long id;

  @Pattern(regexp = "^[^\\*]*$", message = "{3011}")
  @Size(message = "{3014}")
  @NotBlank(message = "{3000}")
  @Column(name = NAME, unique = true, nullable = false)
  private String name;

顺序:

CREATE SEQUENCE  SEQ_name MINVALUE 1000 NOMAXVALUE INCREMENT BY 1 CACHE 20 NOORDER NOCYCLE;

休眠调用SEQ_name.nextval但如果allocationSize大于 1,则将其递减 AllocationSize 并递增 1。

下一个 (allocationSize-1) 密钥生成无需与数据库通信,只需加 1 即可完成。

因此,如果您使用默认的allocationSize也就是 50,有两个结果:

该序列必须具有INCREMENT BY设置为相同的值allocationSize

要将序列与数据库中的现有密钥对齐,请设置START WITH to

max(ID) + 分配大小

这是一个小例子

-- START WITH = max(ID) + allocation size 
-- INCREMENT BY = allocation size
-- e.g. if 100 is the last key,
-- to start with a key 101 - set START WITH to 150
CREATE SEQUENCE hib_seq START WITH 150 INCREMENT BY 50;



select hib_seq.nextval - 50 + 1 from dual;
101
-- 49 times Hibernate performs increase by 1 - keys 102 to 150
-- new sequence generation
select hib_seq.nextval - 50 + 1 from dual;
151

Note此行为要求属性 hibernate.id.new_generator_mappings 为 true 作为推荐的

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

Hibernate 5 序列生成问题 的相关文章

  • 如何通过ODBC检索Oracle数据库函数的结果?

    我在通过 ODBC 调用 Oracle 存储函数 而不是过程 时遇到问题 我的函数非常简单 它只是连接两个字符串 我可以通过以下方式调用它 rs c execute SELECT add str yogi bubu FROM dual fo
  • 如何查看授予其他用户的架构哪些权限

    考虑这种情况 在数据库中 我有两个用户 A 和 B 及其相应的架构 我想知道 如何获取信息 架构 B 中的用户 A 有哪些权限 考虑这种情况 我们有两个用户及其关联的场景 我们有用户A和用户B 在A中 假设我们有TB1 TB2 在B中 假设
  • PL/SQL 过程成功完成但没有显示任何内容

    我有以下过程代码 create or replace PROCEDURE Ventas cliente p DNI IN CHAR IS CURSOR c pedidos clientes IS SELECT FROM Pedidos ve
  • 关于pl/sql存储程序文本的问题

    我使用 TOAD 进行 PL SQL 开发 在 TOAD 中 当我输入过程名称并按 f4 时 我可以看到该过程的源代码 我认为 TOAD 从 v sqltext 视图获取源代码 为了证实我的想法 我写了一个查询 select from v
  • 尝试在 Oracle 11.2.0.2.0(64 位)中获取连接时出现 java.lang.ArithmeticException

    我目前正在 Oracle 中使用 Java 存储过程 并且在尝试在 Java 代码中获取连接时看到一些奇怪的行为 我的Java被打包成jar文件 然后使用以下命令部署到Oracle中loadjava命令行实用程序 Apackage然后在数据
  • Oracle 11g OFFSET FETCH 给出错误

    我正在进行查询并尝试从数据库中获取随机数量的行 但 Oracle 一直告诉我我的命令尚未正确结束 select from random table order by random column name offset 0 rows fetc
  • 使用 createNativeQuery 调用 Oracle 存储过程

    我需要使用 JPA 调用存储过程并找到这篇文章 http www oracle com technology pub articles vasiliev jpql html http www oracle com technology pu
  • IBM Websphere JPA 配置 - 如何更新 persistence.xml

    我是 EJB 3 和 JPA 的新手 我在应用程序服务器中创建了一个数据源 它是jdbc AppDataSource 默认持久性提供程序保留为com ibm websphere persistence PersistenceProvider
  • javax.persistence.Query.getResultList() 可以返回 null 吗?

    如果是的话 是在什么情况下 Javadoc 和 JPA 规范什么也没说 你是对的 JPA 规范对此只字未提 但Java Persistence with Hibernate 书籍 第二版 says 如果查询结果为空 则返回null 当您调用
  • 使用 to_char 格式化间隔

    以下 SQL 命令 select TO CHAR NVL arg1 arg2 TO DSINTERVAL 0 00 00 00 from table1 生成格式为 000000000 00 03 01 954000 的结果 是否可以在 to
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • 替换 Oracle 包的一部分

    我需要修改包内的一个过程 我需要接触声明和实施 由于我正在维护每次修改的补丁文件 因此我希望更改最小化 我可以仅使用更改的过程更新包 如果是 如何更新 还是需要提供完整的包定义和实现 您需要替换整个包规范和主体 您不能仅对包的一部分进行操作
  • 分层查询

    我希望我能够解释困扰我的问题 我有以下分层数据集 这只是 34K 记录的子集 PARENT ID CHILD ID EXAM TUDA12802 TUDA12982 N TUDA12982 TUDA12984 J TUDA12984 TUD
  • REgex从oracle中的字符串中获取数字

    我有以下格式的字符串 阿克拉姆 88 jamesstree 20140418 阿克兰 8 约翰街 20140418 阿克兰 888 johnstreet 20140418 现在我只想检索 88 8 和 888 值 我为此编写了以下查询 SU
  • 使用 JPA Criteria API 进行分页的总行数

    我正在系统中为实体实现 高级搜索 功能 以便用户可以使用该实体的属性上的多个条件 eq ne gt lt 等 来搜索该实体 我正在使用 JPA 的 Criteria API 动态生成 Criteria 查询 然后使用setFirstResu
  • Oracle TDE 能否保护数据免受 DBA 的侵害?

    甲骨文专家 我的客户想要部署一个必须在数据库中保存信用卡号的应用程序 客户显然很关心安全性 我们特别关注一个令人痛苦的问题 我们如何确保只有具有 业务需要知道 的授权用户才可以访问数据 我们如何保护数据免受 DBA 的侵害 一个明显的解决方
  • JPA中flush的确切目的是什么

    一些令人困惑的解释 冲洗 刷新是将底层持久存储与内存中保存的持久状态同步的过程 它将更新或插入到正在运行的事务中的表中 但它可能不会提交这些更改 如果无论如何更改仅在提交后才会保留在数据库中 那么为什么要在代码中间刷新呢 运行刷新后 如果对
  • 对 PLSQL 中的每个表执行

    我想要所有表中匹配特定名称条件的记录数 这是我构建的 SQL Declare SQLStatement VARCHAR 8000 BEGIN SELECT SELECT COUNT FROM Table Name INTO SQLState
  • Spring Data JPA 应用排序、分页以及 where 子句

    我目前正在使用 Spring JPA 并利用此处所述的排序和分页 如何通过Spring data JPA通过排序和可分页查询数据 https stackoverflow com questions 10527124 how to query

随机推荐

  • Angular ng-table 动态标头在内部不起作用

    我正在将 ng table 与动态列一起使用 使用创建者的示例 位于http bazalt cms com ng table example 20 它工作得很好 直到我尝试用 transclude 包裹指令 女巫导致标题消失 如上所示htt
  • 通过整数数组中的索引查询表

    在我从 VB NET 转换数据 to timestamp 和 to number 获得出色的结果后 我想知道 PostgreSQL 是否有可能通过来自 NET 的整数数组查询表索引 比如说 我的数组充满了 1 3 5 6 9 Postgre
  • SQLite 整数数据类型(如 int、integer、bigint 等)之间有什么区别?

    sqlite 中整数数据类型有什么区别 INT INTEGER TINYINT小智中薄荷 BIGINT无符号大整型 INT2 INT8 哪一个可以存储 32 位整数 哪一个可以存储 64 位值 支持128位吗 我现在发现整数数据大小有点令人
  • 为什么要封一个班级?

    我想听听 Net 框架中大量密封类背后的动机是什么 密封一个类有什么好处 我无法理解不允许继承如何有用 而且很可能不是唯一一个与这些类作斗争的人 那么 为什么框架要这样设计 难道这不是一个突破性的改变来揭开一切吗 除了邪恶之外 一定还有其他
  • 如何让我的简单扭曲代理工作?

    我正在尝试利用扭曲网框架 请注意三行注释 line1 line2 line3 我想创建一个代理 网关 它将根据 url 将请求转发到两个服务器之一 如果我取消注释 1 或 2 并注释其余部分 请求将被代理到正确的服务器 但是 当然 它不会根
  • 如何根据 iOS 中的当前设备加载单个类的不同 xib?

    我在视图控制器中有完整的代码 所以 我需要在 iPad iPhone 和 iPod 中显示相同的输出 因此 我使用单视图控制器来处理数据 为此 我如何选择 ipod 或 ipad 取决于 iOS 中当前设备的不同 XIB 我不想再创建一个视
  • 如何本地化 Inno Setup 安装文件的 VersionInfo?

    我正在创建一个根据用户语言具有不同名称的应用程序 例如 该软件称为 设备模拟器 英语和 Ger teemulation 在德国 我想在安装文件的版本信息中反映不同的名称 右键单击 gt 属性 gt 详细信息 选项卡 到目前为止 我在 Inn
  • 使用 jQuery 检测元素内容更改

    change 函数可以工作并检测表单元素的变化 但是有没有办法检测 DOM 元素的内容何时发生变化 这不起作用 除非 content是一个表单元素 content change function do something 我希望在执行以下操
  • 什么是最小有效 UNC 路径?

    我想创建一个 除其他外 解析 UNC 路径的库 但我不完全理解语法 常见的例子是 server share path 有效的文件路径需要所有这些吗 我可以导航到 server 没有share 使用 Windows 资源管理器 但我假设它使用
  • 我们如何使用 Windows 身份验证保护 Swagger UI

    我们有一个 Net Core 2 2 Web Api 它使用 swagger ui 来公开 Web Api 定义 我们希望仅向特定 AD 组内的用户保护此端点 我们目前使用 Windows 和匿名身份验证 问题是我们无法强制 Swagger
  • 为什么函数参数中的逆变类型参数被视为处于“out”位置?

    我很难用英语描述 但问题是 class Consumer
  • 如何将多边形绑定到 WPF 中现有的 PointCollection?

    我当前的实现不会在表单上显示任何内容 即使我认为有界的集合有数据 我在调试中检查 这是一些代码 public event PropertyChangedEventHandler PropertyChanged PointCollection
  • 使用 Dart/Flutter 查询包含 Cloud Firestore 中保存的 ID 的地图

    如何使用 Dart Flutter 获取存储在 Cloud Firestore 中的地图 我尝试过这个 但它只适用于 Array Firestore instance collection posts orderBy createdAt d
  • 我应该如何更新过时的 fork?

    几个月前 我分叉了一个存储库 进行了更改并提交了拉取请求 该请求最终被 master 接受 从那以后 我的分叉代码在我的硬盘上就没有受到任何影响 现在 我想再次为同一个存储库做出贡献 我的 fork 中的代码与 master 不同步 因为它
  • ADB服务器无法启动android

    我已经安装了 adt 捆绑包 eclipse 但是 我似乎无法运行 AVD 我有问题 ADB server didn t ACK failed to start daemon 我已经搜索了如何解决它 我已经阅读并输入adb kill ser
  • 将 Excel 导入 Panda Dataframe

    以下只是 Coursera 数据科学作业的开始 我希望这不是一件小事 但我对此迷失了方向 找不到答案 我被要求将 Excelfile 导入 panda 数据框并随后对其进行操作 该文件可以在这里找到 http unstats un org
  • Makefile 的运行方式与 shell 命令不同? (使用猫时)

    我正在尝试将手动运行的命令转换为 Makefile 目标 但出现与我的使用相关的错误cat 我想我正在尝试打开文件 cat 而不是cat ing 实际文件 queries sql clean ls sql sql sort V while
  • 捕获所选 UI 菜单选项的名称

    我正在尝试将条目添加到 Google 表格的菜单中 ui createMenu Push to Sheet addItem Texas menuItem addItem Illinois menuItem addToUi 在回调函数中men
  • 新日期的日期无效("YYYY-MM-DDThh:mm:ss");实例化

    我正在使用 Titan 它是一个基于 JavaScript 的移动开发框架 我有一个数组 其中的单元格中包含一个表示 YYYY MM DD HH mm ss 格式的 日期和时间 字符串的字符串 NightsArray i 3 返回 2014
  • Hibernate 5 序列生成问题

    我正在从 3 迁移到 hibernate 5 我发现序列生成器在 Hibernate 5 中无法正常工作 我用最小值 1000 定义了序列并递增 1 但是当我尝试创建新的实体记录时 我看到插入的记录的 id 为 951 看起来 id 与实际