我想从 @Transactional 中忽略特定实体(使用 Spring/Hibernate)

Dan*_*ick 0 mysql hibernate transactions spring-mvc spring-transactions

我运行了一个 SpringMVC 应用程序,并且我将 @Transactional 注释与 HibernateTransactionManager 结合使用。

结果,在我的应用程序中我抛出 RuntimeException 的任何地方,我们都会回滚 - 这太棒了!一切正常。

但现在我想从 Transactionality 中排除一个 Entity。这个实体代表我想要持久化的东西(基准/日志/错误),即使(特别是如果)有一个 RuntimeException 标记了回滚的其他一切。

我宁愿不必从开始和结束事务的拦截器外部调用某个存储库。

有没有直接的方法来实现这一点?

JB *_*zet 5

实体不是事务性的。一种方法是。

如果您希望算法的某些部分不属于当前事务,则将该部分放在单独 bean 的方法中,并用 注释@Transactional(propagation = REQUIRES_NEW),以便在调用此方法时打开并提交一个专用的单独事务,不受当前交易结果的影响。