RoD*_*RoD 8 java spring hibernate jpa
我的注释有问题@Transactional
.
我有一种做某些东西的方法,而且我在里面扔了一个东西IllegalArgumentException
.
我认为(即使我已经捕获了异常)它将事务设置为rollbackOnly(异常抛出时的一些触发器)并且它结束而没有成功提交事务.
这是错误:
org.springframework.transaction.TransactionSystemException : Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly
Run Code Online (Sandbox Code Playgroud)
我可以添加@Transactional
一个无回滚 - 我抛出和捕获的异常,但我不认为这是一个真正的解决方案.
也许有一种方法可以取消对事务的rollbackOnly,但我认为这也不是最好的做法......
所以,你知道我该怎么办?
谢谢,
尝试/捕获IllegalArgumentException
类似于代码气味的声音(有效的Java项目57:仅在特殊情况下使用例外)
是否将事务设置为rollbackOnly
取决于所使用的代理机制.如果使用JDK代理,则处理程序位于外部,无法在方法调用中注册捕获的异常.如果你使用mode=aspectj
,事情会有所不同.此外,如果您有嵌套的事务上下文,则必须使用@Transactional(noRollbackFor=IllegalArgumentException.class)
内部方法.
归档时间: |
|
查看次数: |
9305 次 |
最近记录: |