Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java toplink排序按预分配大小跳转_Java_Jpa_Orm_Toplink_Persistence.xml - Fatal编程技术网

Java toplink排序按预分配大小跳转

Java toplink排序按预分配大小跳转,java,jpa,orm,toplink,persistence.xml,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

我们有一个使用表排序的应用程序。每次我们跳转服务器时,表中的序列号(这里是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>

习俗
80000
序号
序号
顺序
在我们的mappings.xml中

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

80000

预分配的整个思想是toplink将数据库中的序列增加80000,并在内存中为接下来的80000个需要新id的项目保留一个计数器。如果您跳转服务器,内存中的计数器将丢失,toplink将为下一批重新读取和更新数据库序列


如果确实希望增量为1,可以在MSSQL中使用标识列。请参见

,但我们组织中的toplink不支持标识列。我不会担心:-)。不,真的,只要生成的id不同,就可以了。实际上不需要增加1。