Pense no Hibernate como um grande cache que pode use um banco de dados como uma "loja" onde coloca coisas que não cabem mais no cache. O Hibernate não liberará tudo para o banco de dados conforme você o altera, ele aguardará. É provável que você altere mais de um único campo em um objeto.
Então você precisa liberar a sessão (
em.flush()
), ou você deve executar uma consulta ou deve confirmar a transação atual (não é uma opção fácil ao usar o Spring).