Я использую Spring с PostgreSQL, и я пытаюсь сделать что-то вроде UPSERT, используя такой код:
jt.update("delete from A where id = 1")
jt.update("insert into A (id, value) values (1, 100)")
заключенный внутри транзакции (используя @Transactional
).
Проблема заключается в том, что при наличии множества параллельных запросов этот код не работает с ошибками "дубликат ключа", то есть транзакция не изолирована или...
Я пропустил что-то о том, как работают транзакции? Должен ли я использовать другой механизм здесь (например, синхронизация потоков)?