Я изучаю Spring JPA и Hibernate.Итак, я столкнулся с проблемой.
У меня есть этот метод
@Transactional(isolation = Isolation.REPEATABLE_READ)
public void sendMoney(Long from, Long to, Double amount) {
WalletEntity fromWallet = walletServiceImpl.getWallet(from);
WalletEntity toWallet = walletServiceImpl.getWallet(to);
fromWallet.setAmount(fromWallet.getAmount() - amount);
toWallet.setAmount(toWallet.getAmount() + amount);
TransactionEntity transaction = new TransactionEntity();
transaction.setAmount(amount);
transaction.setToWallet(toWallet);
transaction.setFromWallet(fromWallet);
transactionRepository.saveAndFlush(transaction);
}
Я хотел проверить его и создал это:
@GetMapping("/send")
public void sendMoney() {
ExecutorService executorService = Executors.newFixedThreadPool(20);
for (int i = 0; i < 100; i++) {
executorService.execute(() -> {
accountServiceImpl.sendMoney(1L, 2L, 10D);
});
}
}
Поэтому, когда я читаю кошелек, яполучить старое значение, но я сделал Isolation.REPEATABLE_READ
.Значения в базе данных неверны, конечно.Можете ли вы объяснить, что не так?Спасибо!