0

我们有一个应用程序,我们使用表排序。每次我们反弹服务器时,表中的序列号(这里是 SEQ_R)表现得很奇怪。序列号增加 90000,有时增加 50。其中,增量应该是 1。

我不得不提到我们使用 MSSQl 服务器。

在我们的 session.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>
4

1 回答 1

1

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

如果你真的想增加 1,你可以在 MSSQL 中使用 IDENTITY 列。使用非 Oracle 数据库平台查看Toplink 本机排序

于 2012-01-06T15:57:56.460 回答