我有一个使用HSQL DB开发的应用程序,问题是我们正在使用JPA/Hibernate将它迁移到MySQL。 问题是旧模式没有AUTO_INCREMENT主键:我如何使用JPA在不修改模式的情况下使用这种递增键特征?如何将不带AUTO_INCREMENT主键的现有DB模式转换为具有AUTO_INCREMENT的键?
是否有一种机制来告诉hibernate将最后一个INSERTED_ID + 1用于下一次插入?
非常感谢,
我有一个使用HSQL DB开发的应用程序,问题是我们正在使用JPA/Hibernate将它迁移到MySQL。 问题是旧模式没有AUTO_INCREMENT主键:我如何使用JPA在不修改模式的情况下使用这种递增键特征?如何将不带AUTO_INCREMENT主键的现有DB模式转换为具有AUTO_INCREMENT的键?
是否有一种机制来告诉hibernate将最后一个INSERTED_ID + 1用于下一次插入?
非常感谢,
最安全的是创建表时使用MySQL AUTO_INCREMENT,如果你想开始除1以外的AUTO_INCREMENT值,你可以设置值与CREATE TABLE或ALTER TABLE,像这样:
mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;
如果你不想在迁移到mysql的时候把这个小小的修改添加到模式中。您可以使用通过从启动时的最大主键值计数构建的休眠ID生成器increment
。
真的很重要!与mysql AUTO_INCREMENT相比,在群集中使用增量不安全。
返回一个长,通过在启动时从最大主键值计数 构造一个IdentifierGenerator。在 群集中使用不安全!
映射参数支持,但通常不需要:表,列。 (这些表参数指定的逗号分隔的表 名称列表。)
产生长,短或者int独特只有当没有其它进程是 将数据插入类型的标识符。同一张桌子。不要在集群中使用。
首先,非常感谢您的回复。 我不知道如何配置Hibernate,因为我使用JPA xml映射。有没有一种方法可以将映射配置为像您所说的那样使用“hibernate HINT”? 再次感谢, – kaffein