我有一个用HSQL DB开发的应用程序,问题是我们正在使用JPA / Hibernate将它迁移到MySQL。 问题是旧架构没有AUTO_INCREMENT主键:如何在不修改架构的情况下使用JPA来使用这种递增键功能?
是否有一种机制告诉hibernate为下次插入采用最后一个INSERTED_ID + 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相比,增量在群集中使用是不安全的。
一个IdentifierGenerator,它返回一个由计数构造的long 从启动时的最大主键值。不安全使用 簇!
支持映射参数,但通常不需要:表,列。 (tables参数指定了以逗号分隔的表列表 名字。)
生成long,short或int类型的标识符,仅当没有其他进程时才是唯一的 将数据插入同一个表中。不要在群集中使用。