toplink sequencing按预分配大小跳转

时间:2012-01-06 04:49:51

标签: java jpa orm toplink persistence.xml

我们有一个应用程序,我们使用表序列。每次我们反弹服务器时表中的序列号(此处为SEQ_R)都很奇怪。序列号增加90000,有时增加50.其中,增量应该是由1。

我必须提到我们使用MSSQl服务器。

在我们的sessions.xml中

<sequencing>
  <default-sequence xsi:type = "table-sequence">
  <name> Custom </name>
  <preallocation-size> 80000 </preallocation-size>
  <table> SEQ </table>
  <name-field> SEQ_N </name-field>
  <counter-field> SEQ_R </counter-field>
  </default-sequencing>
</sequencing>

在我们的mappings.xml

<toplink:sequencing>
  <toplink:default-sequence  xsi:type = "toplink:native">
  <toplink:preallocation-size> 80000 </toplink:preallocation-size>
</toplink:default-sequence>
</toplink:sequencing>

1 个答案:

答案 0 :(得分:1)

预分配的整个想法是toplink会将数据库中的序列增加80000,并为下一个需要新ID的80000个项目保留一个计数器。如果您退回服务器,内存中的计数器将丢失,toplink将再次读取并更新数据库序列以用于下一批。

如果你真的想要增加1,你可以在MSSQL中使用IDENTITY列。见Toplink Native Sequencing With a Non-Oracle Database Platform