Две транзакции записывают разные столбцы одной записи в весенние данные jpa - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть проект данных весны jpa, который будет выполнять две транзакции (T1, T2) параллельно для записи данных в таблицу ниже:

CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `code` int(11) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8

T1 запишет имя столбца и код, а T2 запишет имя & возраст. Итак, я ожидаю, что если T1 появится первым, то sql для T1 будет:

insert into test (name, code) values (?, ?)

, и T2 обновит вставленную выше запись, используя update:

update test set age = ? where name = ?

если T2 приходит первым, то T2 будет вставлен и T1 обновится.

В весенних данных jpa присутствует метод save () для динамического добавления / обновления данных по умолчанию, но я не думаю, что это поможет В моем случае это может выдать два оператора вставки, если T1 и T2 вызывают save () одновременно.

Так есть ли способ справиться с этой ситуацией?

...