tran.begin(TransactionPropagation.REQUIRES_NEW);提交时报错Transaction silently rolled back because it has been marked as rollback-only
时间: 2024-08-13 14:01:48 浏览: 109
IEEEtran.zip_IEEE 模板_IEEEtran.zip_electronics_latex_latex 模板
这个错误通常发生在Spring框架中,当你试图在一个事务开始(`tran.begin(TransactionPropagation.REQUIRES_NEW)`)后立即提交,但是该事务已经被标记为只读或回滚(`rollback-only`),这时就会抛出异常。
`REQUIRES_NEW`是一个事务传播行为,它表示如果当前存在活跃事务,则会新建一个新的事务。然而,如果已有事务处于`readOnly`或`requiresRollback`状态,新的事务将无法正常创建,并会被隐式回滚,导致你在尝试提交时遇到错误。
这可能是由于之前某个地方的代码手动设置了事务为只读或者有异常发生后自动设置为了回滚。解决这个问题的方法包括:
1. 检查是否有代码无意中将事务设置为只读模式。
2. 确认所有业务操作都在事务范围内,特别是那些期望持久化变更的操作。
3. 如果你需要确保新事务不受影响,可以考虑使用其他事务传播行为,如`NEVER`或`REQUIRED`。
阅读全文