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.