Является ли генератор = "приращение" достаточно для последовательного номера счета? - PullRequest
1 голос
/ 26 ноября 2009

Мне нужно написать программное обеспечение для генерации счетов в ColdFusion 9, используя ORM (Hibernate).

Одно из требований заключается в том, что номер счета-фактуры должен быть последовательным без пробела, что означает, что номер счета-фактуры не может быть пропущен.

Значение идентификатора базы данных (т. Е. Generator = "native") не работает, поскольку оно пропускает число, если транзакция не была зафиксирована.

Согласно документации CF9 :

приращение: этот алгоритм генерирует идентификаторы типа long, short или int, увеличивая счетчик поддерживается ORM. Это обычно используется при автогенерации для первичный ключ не включен в таблица, и вы хотите, чтобы ORM генерировать основной ключ. Это следует использовать, когда единственный случай ColdFusion является только процесс для вставки данных в таблица.

Гарантирует ли генератор приращений Hibernate отсутствие пропуска при неудачной транзакции? Это достаточно хорошо?

Если нет, то как мне это сделать? вставить номер счета-фактуры с помощью потокобезопасного генератора последовательных чисел в postInsert ()?

Ответы [ 2 ]

1 голос
/ 28 ноября 2009

generator = ”прирост” равен НЕ достаточно для гарантии пропуска номера последовательного счета при неудачной транзакции.

Только что протестировано с:

// foo.cfc
/** @generator increment */
property numeric id;

// test.cfm
f1 = entityNew("foo");
f2 = entityNew("foo");
entitySave(f1);
ormflush();
eneitySave(f2);
throw();

Затем я просматриваю test.cfm и обновляюсь несколько раз. Столбец ID в таблице Foo содержит все нечетные числа, поскольку f2 был присвоен четный номер, но не сохранен.

0 голосов
/ 26 ноября 2009

Глядя на документацию по Hibernate, выясняется, что при настройке этого генератора имеется достаточно гибкости. Основной принцип заключается в том, что он будет искать наибольшее значение идентификатора из базы данных и добавлять 1 к нему. Там не должно быть пробелов в цифрах. Однако вам следует помнить о проблемах параллелизма.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...