скачки последовательности верхнего звена по размеру предраспределения - PullRequest
0 голосов
/ 06 января 2012

У нас есть приложение, в котором мы используем последовательность таблиц. Каждый раз, когда мы отбрасываем сервер, порядковый номер (здесь SEQ_R) в таблице ведет себя странно. Последовательный номер увеличивается на 90000, а иногда на 50. на 1.

Я должен упомянуть, что мы используем сервер MSSQl.

В наших сессиях. 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 Ответ

1 голос
/ 06 января 2012

Идея предварительного распределения заключается в том, что toplink увеличивает последовательность в базе данных на 80000 и сохраняет счетчик в памяти для следующих 80000 элементов, которым требуется новый идентификатор.Если вы сбросите сервер, счетчик в памяти будет потерян, а toplink снова прочитает и обновит последовательность базы данных для следующего пакета.

Если вы действительно хотите увеличить на 1, вы можете использовать столбец IDENTITY в MSSQL,См. Собственная последовательность Toplink с платформой базы данных, отличной от Oracle

...