Como obter o valor antigo da entidade no evento @HandleBeforeSave para determinar se uma propriedade foi alterada ou não?

Estou tentando colocar a entidade antiga em um@HandleBeforeSave evento.

@Component
@RepositoryEventHandler(Customer.class)
public class CustomerEventHandler {

    private CustomerRepository customerRepository;

    @Autowired
    public CustomerEventHandler(CustomerRepository customerRepository) {
        this.customerRepository = customerRepository;
    }

    @HandleBeforeSave
    public void handleBeforeSave(Customer customer) {
        System.out.println("handleBeforeSave :: customer.id = " + customer.getId());
        System.out.println("handleBeforeSave :: new customer.name = " + customer.getName());

        Customer old = customerRepository.findOne(customer.getId());
        System.out.println("handleBeforeSave :: new customer.name = " + customer.getName());
        System.out.println("handleBeforeSave :: old customer.name = " + old.getName());
    }
}

No caso, eu tento obter a entidade antiga usando ofindOne método, mas isso retorna o novo evento. Provavelmente devido ao cache do Hibernate / Repository na sessão atual.

Existe uma maneira de obter a entidade antiga?

Eu preciso disso para determinar se uma determinada propriedade é alterada ou não. Caso a propriedade seja alterada, preciso executar alguma ação.

questionAnswers(10)

yourAnswerToTheQuestion