от
У меня есть таблица, которая имеет свой порядковый номер, который используется в качестве идентификатора для нескольких таблиц (несколько таблиц счет всех таблиц с помощью одной последовательности). Всякий раз, когда я хочу вставить новую запись в таблице счет-фактура прочитал тока порядковый номер из таблицы и обновить его с 1. Проблема в том, когда есть несколько запросов на новые номера счетов-фактур порядковый номер возвращает дубликаты номеров.Я попробовал блока synchronized, но все-таки это возвращение повторяющиеся значения, когда несколько запросов бьют одновременно. Вот метод, чтобы получить порядковый номер
synchronized public int getSequence(){
  Sequence sequence = getCurrentSession().get(Sequence.class,1); //here 1 is the id of the row
  int number = sequence.getSequenceNumber();
  sequence.setSequenceNumber(number 1);
  getCurrentSession().saveOrUpdate(sequence);
  return number;
}
Я чего-то не хватает?

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

1 Ответ

0 голосов
от
Прежде всего я не рекомендую вам использовать исполнение последовательности. Объяснение почему Но если вам надо - спящий знает, как управлять ею. Взгляните И еще одна вещь. Я настоятельно рекомендую вам выполнять синхронизацию базы данных. Представьте, у вас есть 2 экземпляров вашего приложения, подключенные к одному экземпляру базы данных и работать одновременно.
Добро пожаловать на сайт ByNets, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...