EclipseLink和H2策略= GenerationType.AUTO

时间:2013-06-27 13:10:22

标签: java jpa eclipselink

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

strategy = GenerationType.AUTO

因为IDENTITY策略不起作用(它试图插入NULL ID并失败)。

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

然而,JPA似乎插入了1,51,52,101,151,这有点过于随意,我认为这是浪费数字。 即使它不是浪费(例如因为JPA也使用了间隙之间缺少的数字),我希望id增加而不是随机的!

有关如何设置的任何建议吗?

1 个答案:

答案 0 :(得分:0)

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

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

IDENTITY可以与H2一起使用,确保您使用正确的IDENTITY类型创建了表。 AUTO默认为TABLE排序。一般情况下,我不建议使用IDENTITY,因为它不支持预分配。