用于命名查询删除操作的 hibernate 实体监听器

标签 hibernate entitymanager entitylisteners

对于我们的应用程序,我们需要使用 hibernate 实现触发器。我们可以找到的一个最佳解决方案是使用 Annotation 的 Entity listerner,因为我们需要监听特定的实体更改。
除了带有命名查询的删除之外,一切都运行良好,它不提供任何事件。
代码实现
** 实体** - 这里我们添加了监听器

@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我也想得到一个删除事件。

最佳答案

这是不可能的:The Interceptor interface provides callbacks from the session to the application并且通过 native SQL 删除的对象不会传递到 session ,因此不会运行回调

关于用于命名查询删除操作的 hibernate 实体监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18257539/

相关文章:

java - Hibernate 错误在@PostPersist 方法中保留一个实体

java - SQL 查询执行时间比使用 Hibernate SQL Query 的预期时间长

java - Hibernate 映射 - 如何连接三个表

java - 将 @Named 、 @Stateful 注入(inject)到 @Singleton EJB

jpa - 独立于其关联实体单独指定 JPA 实体监听器

java - 在 hibernate 的实体监听器中更新之前获取原始对象

java - JPA - 抽象基实体类中的多对多关系和具体扩展实体子类中的连接表引用

java - 使用 entitymanager 急切加载集合

java - 为什么我在先合并实体时将已删除的实例传递给合并

java - 如何使用实体监听器和回调方法访问 oldObject 和 newObject