Изменить: причиной этого является кеш 1-го уровня, как описано здесь. Решением будет ручная промывка после сохранения.
У меня есть следующий код Java:
Player updatedPlayer = playerRepository.save(player);
CompletableFuture.runAsync(() -> {
List<Player> players = playerRepository.findAllByToolId(updatedPlayer.getToolId());
// Do something with players that takes some time
});
Я ожидал, что плеер вставляется в базу данных через playerRepository. Только после этого выполняются следующие строки с анонимной асинхронной функцией. Таким образом, вставленный игрок всегда должен быть включен в список игроков.
Но похоже дело в том, что иногда игрока нет в списке, а иногда он есть. Кто-нибудь может объяснить, почему это так? Или я что-то не так делаю? Спасибо!