Vit*_*nko 11 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>
Run Code Online (Sandbox Code Playgroud)
Hibernate属性
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
hibernate.hbm2ddl.auto=update
Run Code Online (Sandbox Code Playgroud)
Mysql连接器版本
version.mysql.connector>5.1.39</version.mysql.connector>
Run Code Online (Sandbox Code Playgroud)
Mysql服务器版本是5.6.12
小智 30
从Hibernate 5.0开始,Hibernate解释AUTO生成类型的方式发生了变化.
当使用Hibernate v 4.0和Generation Type AUTO,特别是对于MySql时,Hibernate将选择IDENTITY策略(并因此使用该AUTO_INCREMENT功能)来生成相关表的ID.
当Generation Type被选为AUTO时,从5.0版开始,Hibernate使用SequenceStyleGenerator不管数据库.在MySql的情况下,Hibernate使用表模拟一个序列,这就是你看到hibernate_sequence表的原因.MySql本身不支持标准序列类型.
参考
小智 11
如果你使用strategy="AUTO",Hibernate将生成一个名为hibernate_sequence提供ID序列的下一个数字的表.您可能忘记将该AutoIncrement功能添加到表的PK中.
您可以使用生成策略strategy="IDENTITY"来强制使用AutoIncrementMySql中提供的功能,并避免创建表.
| 归档时间: |
|
| 查看次数: |
19889 次 |
| 最近记录: |