java - 未调用子类实体上的实体侦听器回调
问题描述
我的项目有
- 包含所有实体的“域”子项目
- “services”子项目包含所有服务,包括JPADao、services等。Domain项目被添加到services项目中。
现在我在如下服务中编写了一个 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)我做对了吗,或者如果有人可以在不改变我的依赖关系的情况下建议任何其他方法,会受到欢迎吗?
解决方案
推荐阅读
- java - 当用户在 Java8 中输入错误的日期格式时如何给出错误消息
- tcp - 在 OMNET++ 中的某些事件后如何正确向服务器发送自定义消息
- react-native - 无法对齐自动完成视图
- python - 如何以不同的速率从 pandas 数据帧中对每个组进行采样
- python - 使用 Python 从字符串中提取 2 位整数
- java - 使用 PowerMockito 测试 Unirest
- ios - 将 ImageBackground 调整为全屏
- ms-access - MSAccess 富文本编辑工具中的字体限制
- java - 为什么我的代码只比较数组的第一个和最后一个数字 - Java
- python - 名称未在 python 模块中定义