2012-07-16 44 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