我们有一个应用程序,我们使用表序列。每次我们反弹服务器时表中的序列号(此处为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>
答案 0 :(得分:1)
预分配的整个想法是toplink会将数据库中的序列增加80000,并为下一个需要新ID的80000个项目保留一个计数器。如果您退回服务器,内存中的计数器将丢失,toplink将再次读取并更新数据库序列以用于下一批。
如果你真的想要增加1,你可以在MSSQL中使用IDENTITY列。见Toplink Native Sequencing With a Non-Oracle Database Platform