对于我们的应用程序,我们需要使用 hibernate 实现触发器。我们可以找到的一个最佳解决方案是使用 Annotation 的 Entity listerner,因为我们需要监听特定的实体更改。
除了带有命名查询的删除之外,一切都运行良好,它不提供任何事件。
代码实现 **实体**——这里我们添加了监听器
@Entity
@EventListeners(EmployeeEventListener.class)
public class Employee {
@Id
private String uid;
@Basic
private Calendar lastUpdated;
Run Code Online (Sandbox Code Playgroud)
实体监听器-
侦听器在执行预期操作时占用修改后的实体
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());
}
Run Code Online (Sandbox Code Playgroud)
@PrePersist并且@PostUpdate运作良好,当我用节省或者saveOrUpdate在实体管理器。但是在执行删除命名查询时,我没有收到@PreRemove和@PostRemove
我也想得到一个删除事件。