@Service
public class TesteServiceImpl implements TesteService {
@Autowired
private MesaRepository mesaRepository;
@Override
@Transactional
public void teste() {
// Comanda nome = Comanda 14
Comanda comanda = mesaRepository.carregaPorId(1L);
comanda.setNome("Comanda 26");
mesaRepository.save(comanda);
try {
Thread.sleep(20000);
} catch (InterruptedException ex) {
Logger.getLogger(TesteServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Override
@Transactional
public void teste1() {
Comanda comanda = mesaRepository.carregaPorId(1l);
System.out.println("== Comanda: " + comanda.getNome());
// print == Comanda: Comanda 14
}
}
Meu controller
@GetMapping("/teste")
public String teste() {
testeService.teste();
return "teste";
}
@GetMapping("/teste1")
public String teste1() {
testeService.teste1();
return "teste1";
}
Quando eu chamo o teste e logo em seguida o teste 1, o valor lido por teste1 não é atualizado conforme método teste. O valor só atualiza após a thread terminar e fazer o commit. Como faço para ler esse valor antes de o commit ser realizado?