java - Hibernate_sequence 表生成

标签 java mysql hibernate

我有生成策略 AUTO 的 id 列,我想知道,为什么 MySql 生成 hibernate_sequence 表?我以为 hibernate 会选择 IDENTITY id 生成策略

<mapped-superclass class="com.cl.xlp.model.data.Identity">
    <attributes>
        <id name="id">
            <column name="id" />
            <generated-value strategy="AUTO" />
        </id>
    </attributes>
</mapped-superclass>

hibernate 属性

hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update

Mysql连接器版本

version.mysql.connector>5.1.39</version.mysql.connector>

Mysql服务器版本为5.6.12

最佳答案

从 Hibernate 5.0 版开始,Hibernate 解释 AUTO 生成类型的方式发生了变化。

当使用 Hibernate v 4.0 和 Generation Type 作为 AUTO 时,特别是对于 MySql,Hibernate 会选择 IDENTITY 策略(因此使用 AUTO_INCREMENT 功能)用于为相关表生成 ID。

从 5.0 版开始,当 Generation Type 选择为 AUTO 时,Hibernate 使用 SequenceStyleGenerator 而与数据库无关。在 MySql Hibernate 使用表模拟序列的情况下,这就是您看到 hibernate_sequence 表的原因。 MySql 本身不支持标准序列类型。

引用文献

关于java - Hibernate_sequence 表生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461283/

相关文章:

mysql 在可能为空的条件下查询跨多个表

mysql - 如何在 MySQL 中重置 AUTO_INCRMENT

java - 在 Hibernate 中创建 SQLQuery

java - 持久化对象后,Hibernate assertEquals失败

mysql - 在 Hibernate 中启动时创建 mysql 数据库

java - LWJGL 3 - 渲染文本

java - 读取Java目录中的所有文件(为文件分配优先级)

java - 如何获取父实体?

java - JMH 给出繁忙的吞吐量值

php - 查询仅更新最后一个值