EclipseLink and H2 strategy = GenerationType.AUTO



我正在使用EclipseLink和H2,我已经将策略设置为

strategy = GenerationType.AUTO

因为IDENTITY策略不起作用(它试图插入一个NULL id,但失败了)。

现在我不知道AUTO类型使用了什么,但它似乎有效,但给出的ID有点随机,而我希望它们从1开始,并在可能的情况下以1的步长增加。

然而,JPA似乎插入了1,51,52101151,这有点太随机了,我认为这是浪费数字。即使这不是浪费(例如,因为JPA也使用了间隙之间缺失的数字),我也希望ID不断增加,而不是随机的!

有什么关于如何设置的建议吗?

JPA中默认的预分配大小是50,您可以设置allocationSize将此增量更改为1,尽管我不建议这样做,因为这会使您的性能更差。

你仍然不应该得到这样的洞。您是否为每个请求创建一个新的EntityManagerFactory?(不要这样做),或者您是否有多个并发请求?你在用JTA吗?

IDENTITY确实适用于H2,请确保使用正确的IDENTITY类型创建表。AUTO默认为TABLE排序。一般来说,我不建议使用IDENTITY,因为它不支持预分配。

最新更新