[英]Hibernate_sequence table is generated
我有生成策略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本身不支持标准序列类型。
参考
如果使用strategy="AUTO"
,Hibernate将生成一个名为hibernate_sequence
的表,为ID
序列提供下一个数字。 您可能忘记将AutoIncrement
功能添加到表的PK中。
您可以使用生成策略strategy="IDENTITY"
来强制使用MySql中提供的AutoIncrement
功能,并避免创建表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.