簡體   English   中英

生成Hibernate_sequence表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM