我想忽略成为@Transactional 的特定实体(使用 Spring/Hibernate)

I want to Ignore a Specific Entity from being @Transactional (using Spring/Hibernate)

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

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

但现在我想从事务性中排除单个实体。这个实体代表了我想要保留的东西(benchmarks/logs/errors)即使(特别是如果)有一个 RuntimeException 标记回滚的其他一切。

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

有没有直接的方法来完成这个?

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

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