0

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

strategy = GenerationType.AUTO

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

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

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

关于如何设置它的任何建议?

4

1 回答 1

0

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

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

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

于 2013-06-27T14:04:18.210 回答