Dropwizard Hibernate @UnitOfWork用于无需手动会话处理的嵌套事务

Tre*_*ack 5 java orm hibernate unit-of-work dropwizard

我有一个Dropwizard服务,该服务使用dropwizard-hibernate进行数据库调用。当前,我们正在使用@UnitOfWork资源方法来实现事务性。

但是,我们最近有一个用例,将资源方法中的部分代码提交到事务中。

我尝试使用UnitOfWorkAwareProxyFactoryUnitOfWork的方法级别注释并将其放入资源方法的方法中。但是,这样做的问题是那些未包装的数据库调用@UnitOfWork无法访问任何会话,因此会失败。

作为一种解决方法,我尝试将@UnitOfWork注释以嵌套方式放置(在资源方法和内部方法上)。但是,我的内部方法退出作用域后没有将事务写入数据库。相反,当资源方法返回时,将执行一个最终事务。

我还尝试将顶级@UnitOfWork注释的'transactional'属性设置为false ,但没有任何好处。

我不想手动处理Dao类中的会话,因为这些类的其他调用者@UnitOfWork在资源级别使用注释。

知道如何实现吗?