如何在 MySQL 上使用 Hibernate 批量插入递增的 ID?

Posted

技术标签:

【中文标题】如何在 MySQL 上使用 Hibernate 批量插入递增的 ID?【英文标题】:How to batch insert incrementing IDs with Hibernate on MySQL? 【发布时间】:2013-03-06 09:38:08 【问题描述】:

我正在尝试使用 Hibernate 插入 n 条记录。标准就像从表中获取 MAX ID 并增加 ID 并保存记录。 ID 类似于TK020001

我获得了最大 ID,并为第一条记录增加了值。对于第二条记录,它必须采用最大 ID,但它采用前一个最大值。插入第一条记录后,我关闭了会话并刷新。

谁能给我在这种情况下插入记录的最佳方法(mysql)?

【问题讨论】:

【参考方案1】:

尝试为您的连接将事务隔离级别设置为 READ_UNCOMMITTED。

Work w = new Work()

    @Override
    public void execute(Connection connection) throws SQLException
    
        connection.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
    
;

session.doWork(w);

不要忘记将隔离级别设置回默认级别! 在我的公司,我们有一个小实用程序类,它保存默认级别并设置 READ_UNCOMMITTED (或任何其他)。动作完成后,我们再次使用漂亮的小实用程序将其设置回来。

【讨论】:

以上是关于如何在 MySQL 上使用 Hibernate 批量插入递增的 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JPA/Hibernate 注释将 MySQL char(n) 列映射到实例变量?

Hibernate利用JDBC批操作

如何使用 Hibernate 在 MySQL 中获取自增主键值

mysql 我如何查询一批数据后,并更新这批数据

如何将 Hibernate 从 MySQL 迁移到 SQL Server?

mysql 我如何查询一批数据后,并更新这批数据