У меня есть таблица, которая будет состоять из столбцов целых чисел, каждый из которых по сути является последовательностью. Каждая строка представляет одну учетную запись клиента и связанные с ней последовательности.
Я пытаюсь найти эффективный способ обновить значение определенной последовательности на переменную величину, а затем получить это обновленное значение, все в одном запросе HQL. Я использую Hibernate 3.6.1 и Spring 3.0.5. База данных Postgres.
Я могу делать то, что хочу, с помощью собственного SQL-запроса следующим образом:
update account.sequences set seq1 = seq1 + :seqIncrement where account_id = :accountId returning seq1;
Однако я бы предпочел использовать существующие имена / поля сущностей, а не имена таблиц. Чем меньше мест для обновления поменялось, тем лучше.
Я не использую последовательности, так как в итоге я имею дело с тысячами из них, и это никогда не будет прямой операцией приращения на одну. Я планирую обновить значение, чтобы охватить количество элементов, для которых мне нужны уникальные идентификаторы. Делая это в одном выражении, мне не нужно беспокоиться о проблемах с блокировкой таблиц или параллелизмом.
Так ... у кого-нибудь есть более чистый способ сделать это? Или я просто слишком обдумываю что-то, что уже могу сделать?