3
respostas

Flush e spring

Bom dia, estou fazendo um trabalho utilizando Spring MVC 4 e Hibernate 5 com postgree de banco de dados. Só que estou com o seguinte problema.

Quando eu faço um teste para salvar algum objeto utilizando somente o repository, ele salva normalmente. Porém quando eu salvo no banco de dados através de um service que chama o repository para efetuar a persistencia, eu preciso colocar um flush após o save para que ele possa persistir o objeto no banco de dados. Estou utilizando sessionFactory para realizar as transações.

Vocês podem me explicar o que talvez eu possa estar fazendo errado ou esquecendo de colocar? Pois pesquisei sobre o assunto e a annotation @transaction do spring, faz com que eu não precise colocar o flush após o save para persistir no banco de dados, certo? E o meu código está com está anotation tanto no repository como no service.

3 respostas

Oi Anderson, tudo bem?

Verifique se você importou a anotação do pacote org.springframework.transaction.annotation e não do javax.transaction.Transactional

Abraços!

Está com a annotation do spring mesmo.

E eu percebi também que mesmo se eu fizer um flush depois de persistir e der um find para verificar esse objeto persistido. No banco de dados ainda não encontra-se este objeto. Porém no código é retornado o objeto certo, como se ele já estivesse persistido no banco.

E só realmente aparece no banco de dados esse objeto depois que o teste ou execução de toda a chamada tenha sido realizada.

Algum instrutor teria alguma ideia do que possa ser isso?