我有一个带有@Transactional
注释的类(而不是将其标记为其所有方法)。
尽管我在该类中只有一个不应标记为@Transactional
的方法。
我的问题是:是否有一个注释可以放在这个方法中,将其标记为“非事务性”?还是我应该开始标记该类中每个单独的方法为“事务性”,但排除掉这个方法(这是很多工作)。
谢谢。
我有一个带有@Transactional
注释的类(而不是将其标记为其所有方法)。
尽管我在该类中只有一个不应标记为@Transactional
的方法。
我的问题是:是否有一个注释可以放在这个方法中,将其标记为“非事务性”?还是我应该开始标记该类中每个单独的方法为“事务性”,但排除掉这个方法(这是很多工作)。
谢谢。
有不同的事务传播策略可供使用,这些都存在于枚举Propagation
中。你可能想要使用的策略有:
/**
* Execute non-transactionally, suspend the current transaction if one exists.
* Analogous to EJB transaction attribute of the same name.
* <p>Note: Actual transaction suspension will not work on out-of-the-box
* on all transaction managers. This in particular applies to JtaTransactionManager,
* which requires the {@code javax.transaction.TransactionManager} to be
* made available it to it (which is server-specific in standard J2EE).
* @see org.springframework.transaction.jta.JtaTransactionManager#setTransactionManager
*/
NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED),
/**
* Execute non-transactionally, throw an exception if a transaction exists.
* Analogous to EJB transaction attribute of the same name.
*/
NEVER(TransactionDefinition.PROPAGATION_NEVER), // maybe not this one
因此,请在您的类中使用以下任何一种方法进行注释。
@Transactional
public class MyTransactionalClass {
@Transactional(propagation = Propagation.NOT_SUPPORTED)
public void nonTransactionalMethod() {...}
}
您可以在此处找到所有传播策略的链接。
@Transactional(propagation=NOT_SUPPORTED)
吗? - incomplete-co.de@Transactional(propagation = Propagation.NOT_SUPPORTED)
。 - gene b.