У меня есть таблица, в которой хранится порядковый номер, который используется в качестве идентификатора для нескольких таблиц ( в таблицах с несколькими счетами-фактурами во всех таблицах используется одна последовательность ).
Всякий раз, когда я хочу вставить новую запись в таблицу счетов, я читаю текущий порядковый номер из таблицы и обновляю его +1.
Проблема заключается в том, что при наличии нескольких запросов на новые номера счетов-фактур порядковый номер возвращает повторяющиеся номера. Я пытался синхронизировать блок, но он по-прежнему возвращает повторяющиеся значения при одновременном обращении нескольких запросов.
Вот метод получения порядкового номера
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;
}
Что-то мне не хватает?