1
我有一個@RequestScoped,@Transactional CDI豆在我的REST接口注:事務CDI豆:如何強制事務回滾
@RequestScoped
@Transactional
public class myRestCall
{
@Inject
EntityHandlerService ehs; // contains @PersistenceContext
try
{
// execute business logic, access DB via ehs (JPA/Hibernate)
}
catch(Throwable t)
{
// log exception
// -> rollback transaction
}
}
現在我喜歡有業務的呼叫周圍一個try/catch我可以正確記錄異常的邏輯。但我需要手動回滾事務,除非我再次拋出異常,我不喜歡。那麼我該如何強制翻轉回滾呢?我知道如何做到這一點,如果這將是一個EJB:我們可以做
@Resource
private SessionContext ctx;
然後
ctx.setRollbackOnly();
在catch
密切。
但是,它不是一個EJB,我不能因爲資源限制而使EJB不在其中。
根據文檔:http://docs.oracle.com/javaee/7/api/javax/transaction/Transactional。 html - 它實際上是'rollbackOn'。 – Gimby
感謝#Gimby的糾正 – Wakachopo
@Wakachopo:你的意思是什麼*但是如果你這樣做,你必須**退出**「try-catch」塊*? – badera