文档陈述了明显的事情:
如果在现有事务中执行,则方法将引发异常。
任何人都可以举一个有意义的例子说明何时/为什么可以故意使用它吗?
答案 0 :(得分:1)
一个用例可能是处理事务或范围的框架相关代码。想想Apache Deltaspike,arquillian,hibernate,...
如果公开公共方法,则可能要确保在某些事务中不会错误地使用它们。与其无意地破坏打开的事务,不如使用@NEVER快速失败。
答案 1 :(得分:1)
好吧,可能有几种用例要求您的代码不在事务中运行。与NOT_SUPPORTED相对,NOT_SUPPORTED只会“暂停”当前交易,然后再恢复交易。
我们曾经做过的一个用例是在进行一些交易操作后发送一封电子邮件。发送电子邮件本身不需要进行交易,并且可以确保操作成功并且不会在最后一刻被回滚。我们的电子邮件发送服务从不使用(否则,我们可能会不小心发送“成功”电子邮件,然后收到回滚)。这样,如果有人在操作事务仍未成功提交但仍未成功提交事务的情况下调用它,我们将得到一个异常并知道应该对此进行修复。
答案 2 :(得分:0)
如果您想在代码内部修改非事务性资源,并希望确保其他人知道这一事实,则可以使用此功能。