Java 在Spring中结合@Transactional和@Retryable方法-如何不回滚事务

Java 在Spring中结合@Transactional和@Retryable方法-如何不回滚事务,java,spring,jpa,transactions,Java,Spring,Jpa,Transactions,我们将Spring集成用于我们的行动链。 我们希望对一个流使用一个事务(所有bean都应该使用相同的事务)。这就是为什么我们对允许使用现有事务的事务使用“REQUIRED”标志的原因。 但在一些bean中,我们希望使用可检索特性。因此,如果某个方法中发生异常,我们需要等待一点,然后再次尝试执行逻辑。据我所知,Spring将真正使用初始事务,但它被标记为仅回滚。然后流中的其他bean成功地执行它们的逻辑 @Transactional @Retryable( maxAttempts

我们将Spring集成用于我们的行动链。 我们希望对一个流使用一个事务(所有bean都应该使用相同的事务)。这就是为什么我们对允许使用现有事务的事务使用“REQUIRED”标志的原因。 但在一些bean中,我们希望使用可检索特性。因此,如果某个方法中发生异常,我们需要等待一点,然后再次尝试执行逻辑。据我所知,Spring将真正使用初始事务,但它被标记为仅回滚。然后流中的其他bean成功地执行它们的逻辑

@Transactional
@Retryable(
        maxAttempts = 10,
        backoff = @Backoff(delay = 3000),
        value = PessimisticLockException.class
)
public String someMethod(String someData) {
问题是,最后,我可以在日志中看到异常

Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly

那么,是否可以强制Spring不将事务标记为仅回滚?或者我们可能误解了什么。

您是否尝试设置stateful=true?