如何将没有AUTO INCREMENT主键的现有DB Schema转换为具有AUTO_INCREMENT的键?

时间:2011-10-03 09:44:01

标签: hibernate schema primary-key jpa-2.0 auto-increment

我有一个用HSQL DB开发的应用程序,问题是我们正在使用JPA / Hibernate将它迁移到MySQL。 问题是旧架构没有AUTO_INCREMENT主键:如何在不修改架构的情况下使用JPA来使用这种递增键功能?

是否有一种机制告诉hibernate为下次插入采用最后一个INSERTED_ID + 1?

非常感谢,

1 个答案:

答案 0 :(得分:0)

最安全的是在创建表时使用mysql AUTO_INCREMENT,如果要以除1之外的AUTO_INCREMENT值开始,可以使用CREATE TABLE或ALTER TABLE设置该值,如下所示:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

如果您不希望在迁移到mysql时将此小修改添加到架构中。您可以使用通过从启动时的最大主键值计数构造的hibernate id生成器increment

非常重要!!!与mysql AUTO_INCREMENT相比,增量在群集中使用是不安全的

  

IncrementGenerator

     

一个IdentifierGenerator,它返回一个由计数构造的long   从启动时的最大主键值。不安全使用   簇!

     

支持映射参数,但通常不需要:表,列。   (tables参数指定了以逗号分隔的表列表   名字。)

     

increment

     

生成long,short或int类型的标识符,仅当没有其他进程时才是唯一的   将数据插入同一个表中。不要在群集中使用。