我有生成策略 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/