Я конвертирую БД из Oracle в MySQL.Я использую как Java, так и Hibernate.Когда я использовал оракул, у меня был следующий метод, который дал мне совершенно новое и неиспользуемое значение последовательности:
protected int getSequenceNextValue() {
Session session = sessionFactory.getCurrentSession();
Query query = session.createSQLQuery("select MY_SEQUENCE.NEXTVAL from DUAL");
return ((BigDecimal) query.uniqueResult()).intValueExact();
}
И я пытаюсь реорганизовать этот метод для работы с БД MySQL.У меня есть таблица в MySQL, которую я использую как последовательность (через Hibernate):
create table MY_SEQUENCE(
next_val int(10) NOT NULL
);
Есть ли какой-нибудь потокобезопасный способ получить новое значение из этой таблицы и в том же преобразовании увеличить его?
В большинстве случаев я использую Hibernate Generator для генерации новой последовательности, используя эту таблицу, но в некоторых случаях мне нужно сделать это вручную.
Лучшим решением для меня будет рефакторингвыше, таким образом, что потоки, которые запрашивают таблицу одновременно, не будут выходить из строя, но будут ждать друг друга.
Спасибо ...