Quarkus:交易监听器

时间:2021-03-22 14:58:35

标签: transactions listener quarkus

有没有办法注册一个事务监听器,这样我就可以在事务开始时激活 Hibernate-Session 上的过滤器?

为了同样的目的,我设法为 EntityManager 开发了一个生产者,但是如果 @Transactional(TxType.REQUIRES_NEW) 在同一个请求中启动了一个新事务,这似乎不起作用,因为 EntityManager被重用,但过滤器被清除。

一个解决方案似乎是 Hibernate-Interceptor,但我不知道如何在 Quarkus 中注册这样的拦截器。

1 个答案:

答案 0 :(得分:0)

在 Quarkus 专家的帮助下,我设法找到了解决方案:

EntityManager-producer 的作用域从 @RequestScoped 设置为 @TransactionScoped,这样每次事务开始时都会调用producer。

为了完整性:如果您确实需要监听事务开始,那么 @Observes @Initialized(TransactionScoped.class) 中的某些内容可能会奏效。