我正在使用hibernate的“增量”生成器来生成我的自动增量Id。这工作正常,直到我不得不添加另一个应用程序,它也使用“增量”生成器来生成新的ID。我意识到增量生成器有一个问题:
"generates identifiers of type long, short or int that are unique only when no other process is inserting data into the same table. Do not use in a cluster."
有没有办法用hibernate处理这个问题?或者我是否必须编写额外的代码来锁定表,检查db for max Id(然后增加它)并最终释放锁?使用一个休眠配置不是一个选项。此外,我无法将auto_increment选项添加到db表,因为我们在表上有多个键。
欢迎任何建议,我猜这是一个常见的问题。
答案 0 :(得分:4)
有several other generators可能会为您提供所需内容:
我建议您查看hi/lo。
此外,我无法将auto_increment选项添加到db表中,因为表中有多个键。
我发现这个陈述令人困惑 - 如果表的主键使用多个列,则不能让一列自动递增?
为什么你会有一个多于一列的主键,其中一列是唯一的 - 这使得id
字段不可能有多个值,从而否定了一个目的化合物PK。