我有以下类在Post-Commit-Insert | Delete | Update期间注册事件侦听器。
@Component
public class EntityEventListenerRegistry{
@Autowired
private SessionFactory sessionFactory;
@Autowired
private AuditLogPostInsertEventListener auditLogPostInsertEventListener;
@Autowired
private AuditLogPostUpdateEventListener auditLogPostUpdateEventListener;
@Autowired
private AuditLogPostDeleteEventListener auditLogPostDeleteEventListener;
@PostConstruct
public void registerListeners() {
EventListenerRegistry registry = ((SessionFactoryImpl) sessionFactory).getServiceRegistry().getService(EventListenerRegistry.class);
registry.getEventListenerGroup(EventType.POST_COMMIT_INSERT).appendListener(auditLogPostInsertEventListener);
registry.getEventListenerGroup(EventType.POST_COMMIT_UPDATE).appendListener(auditLogPostUpdateEventListener);
registry.getEventListenerGroup(EventType.POST_COMMIT_DELETE).appendListener(auditLogPostDeleteEventListener);
}
但是,我发现有时无法触发事件监听器。
例如: 我有domainA和domainB并创建了domainADao和domainBDao来保存记录。
当我使用domainADao.save(domainA)保存domainA记录时,提交插入后侦听器也可以正常运行,并且记录可以保存到数据库中。
但是,我在domainB中做同样的事情。我使用domainBDao.save(domainB)保存了domainB记录,该记录也可以保存到数据库中,但是未插入提交后监听器。
有人知道原因吗?