Для нашего приложения нам нужно реализовать триггер с использованием гибернации. Одним из лучших решений, к которому мы могли прийти, был Entity listerner с использованием Annotation, так как нам нужно прослушивать конкретное изменение сущности.
Все работает хорошо, кроме удаления с именованными запросами, которое не дает никаких событий.
Реализация кода ** Entity** — здесь мы добавили прослушиватель
@Entity
@EventListeners(EmployeeEventListener.class)
public class Employee {
@Id
private String uid;
@Basic
private Calendar lastUpdated;
Прослушиватель объектов –
Прослушиватель принимает измененный объект и выполняет намеченную операцию.
public class EmployeeEventListener {
@PrePersist
public void prePersist(Object object) {
Employee employee = (Employee)object;
employee.setUID(UIDGenerator.newUUI());
employee.setLastUpdated(Calendar.getInstance());
}
@PostUpdate
public void postUpdate(Object object) {
Employee employee = (Employee)object;
employee.setLastUpdated(Calendar.getInstance());
}
@PrePersist
и @PostUpdate
работали хорошо, когда я использовал save или saveorupdate в диспетчере сущностей. Но при выполнении запроса на удаление именованного я не получаю события для @PreRemove
и @PostRemove
Я также хотел бы получить событие для удаления.