未调用子类实体的实体侦听器回调

时间:2018-07-16 08:46:57

标签: java spring hibernate jpa entitylisteners

我的项目有

  • “域”子项目,其中包括所有实体
  • “服务”子项目,其中包含所有服务,包括JPADao,服务等。将域项目添加到服务项目中。

现在我已经在如下服务中编写了EntityListener:

public class TestEntityListener {
@PrePersist
public void prePersist(Resource r) {
    perform("INSERTED");
}
@PreUpdate
public void preUpdate(Resource r) {
    perform("UPDATED");
}
@PreRemove
public void preRemove(Resource r) {
    perform("DELETED");
}
@Transactional
private void perform(String target) {
    CallLogBaseDaoJpa callLogBaseDaoJpa = BeanUtil.getBean(CallLogBaseDaoJpa.class);
    //callLogBaseDaoJpa.persist(target));
}

}

Bean Util如下:

@Service
public class BeanUtil implements ApplicationContextAware {
    private static ApplicationContext context;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        context = applicationContext;
    }
    public static <T> T getBean(Class<T> beanClass) {
        return context.getBean(beanClass);
    }
}

现在我必须使用@TestListener注释实体类(资源),但由于我的实体位于域项目中并且无法访问服务,所以我无法注释。

为减轻这种情况,我尝试按如下所示将Resource子类化,并在此子类中添加了EntityListener。我可以将此Resource1保留在服务中,所有此类引用都将为我解决,但是在这种情况下,我的测试监听器不会被调用

  @Entity
  @EntityListeners({TestEntityListener.class})
  public class Resource1 extends Resource    
    {
        private static final long serialVersionUID = -6723893476944789741L;
    }

1)我期望通过将原始实体方法子类化来调用侦听器

放错了位置?难道这不起作用吗?

2)我是否做得对?或者有人可以建议在不更改依赖关系的情况下采用其他任何方法?

0 个答案:

没有答案