Hibernate 未调用PostUpdateEventListener
我试图实现一些逻辑,在一个实体更新中,我需要更新另一个实体上的字段。我想在更新后的侦听器中这样做。 我的代码设置如下,但是没有调用我的Hibernate 未调用PostUpdateEventListener,hibernate,spring-data-jpa,Hibernate,Spring Data Jpa,我试图实现一些逻辑,在一个实体更新中,我需要更新另一个实体上的字段。我想在更新后的侦听器中这样做。 我的代码设置如下,但是没有调用我的onPostUpdate处理程序。我做错了什么? 在我的测试代码中,我正在调用documentRepository.save(documentEntity) (我对POST_INSERT和PostInsertEventListener尝试了相同的方法,效果很好。调用了我的处理程序) 我发现了问题。在我的测试中,我必须运行entityManager.flush(),
onPostUpdate
处理程序。我做错了什么?
在我的测试代码中,我正在调用documentRepository.save(documentEntity)
(我对POST_INSERT和PostInsertEventListener尝试了相同的方法,效果很好。调用了我的处理程序)
我发现了问题。在我的测试中,我必须运行
entityManager.flush()
,然后按预期调用所有内容。但奇怪的是,我不需要为POST\u INSERT
这样做
@Component
public class DocumentUpdateListener implements PostUpdateEventListener {
@Override
public void onPostUpdate(PostUpdateEvent event) {
... //some business logic here
}
@Override
public boolean requiresPostCommitHanding(EntityPersister persister) {
return true;
}
@Override
public boolean requiresPostCommitHandling(EntityPersister persister) {
return true;
}
}
@Component
public class EntityEventListenerRegistry {
@PersistenceUnit
private EntityManagerFactory emf;
@Autowired
private DocumentUpdateListener documentUpdateListener;
@PostConstruct
protected void init() {
SessionFactoryImpl sessionFactory = emf.unwrap(SessionFactoryImpl.class);
EventListenerRegistry registry = sessionFactory.getServiceRegistry().getService(EventListenerRegistry.class);
registry.getEventListenerGroup(EventType.POST_UPDATE).appendListener(documentUpdateListener);
}
}