2012-07-16 49 views
0

我使用Hibernate和mySql。在MySql + Hibernate中未使用改變的自動增量ID

我已經定義了數據庫腳本如下:

CREATE TABLE `Foo` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `version` int(11) NOT NULL DEFAULT '0', 
    `data` varchar(45) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
); 
ALTER TABLE Foo AUTO_INCREMENT = 34324; 

,這是我的Hibernate映射:

<class name="org.xyz.Foo" table="Foo"> 
    <cache usage="read-write"/> 
    <id name="id" column="id"> 
     <generator class="increment"/> 
    </id> 
    <version name="version" column="version"/> 
    <property name="data" column="data"/> 
</class> 

問題:刀片不尊重被設置爲34324自動增量標識。如我所料,插入的ID從1開始,而不是34324。 我不是自己設定ID。

回答

0

根據你的hibernate映射首選生成策略是increment。這意味着Hibernate會生成值。但根據DDL列應該是AUTO_INCREMENT,這意味着值由MySQL分配。

如果AUTO_INCREMENT是你想要的,解決方法是使用下面的Hibernate映射:

<generator class="identity"/> 
+0

是啊,就是這樣。謝謝。 – 2012-07-16 09:27:57