Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Novo EntityManager às vezes obtendo dados obsoletos do MySQL


Por algum motivo, pensei que a transação implícita que se junta ao entityManager era uma nova transação. Mas documentos do Hibernate estado:"Quando você cria um gerenciador de entidade dentro de uma transação, o gerenciador de entidade automaticamente se junta à transação atual."

Então, aparentemente, há outra transação já em execução (não surpreendente) e meus resultados de busca mudam dependendo do que já foi lido (porque o banco de dados está sendo executado no modo REPEATABLE-READ).

No curto prazo, vou varrer meu código para explicitamente begin() transações onde quer que esteja faltando. A longo prazo, examinarei o Spring Transactions para ver como gerenciar transações de uma maneira mais infalível (como foi sugerido nos comentários).