春季 2.5,休眠。
我们的应用程序被构建为具有服务层和管理器层。服务层提供所有只读服务并将结果传达给 UI。对于需要更改数据库的服务,服务层执行所有初始只读功能,然后调用管理器层。
我们围绕我们的管理层设置了一个事务建议,以捕获来自管理层的所有异常并回滚这些事务。这在大多数情况下都很好用。
问题在于我们有一个经理调用另一个经理来执行某些功能的情况。此功能会引发异常,这是从 UI 调用时真正的异常,但在客户端管理器内部处理并返回成功结果。事务管理器看到抛出了异常并回滚事务,即使异常已成功处理。
这是导致我们悲伤的交易属性。
<tx:method name="*" propagation="REQUIRED" rollback-for="Throwable" no-rollback-for="OverridableException"/>
有没有办法可以指定深度?我想说,只回滚最高管理者层调用中的异常,而不是对同一事务的后续调用中的异常。
谢谢!