[英]JPA (Hibernate) XA Datasource execute Stored Procedure in Transaction
我在使用XA事務的Sql Server 2005上使用JBoss 6,JPA(休眠)。 我能夠運行查詢和存儲過程,但是我試圖在它自己的事務(某種)中運行某個存儲過程。 意味着如果存儲過程失敗或返回錯誤,則應回滾存儲過程所做的更改,而不回退其他查詢(例如,entityManager.persist())所做的更改
我已經在存儲過程本身中嘗試過BEGIN TRANSACTION,ROLLBACK等...,但是出現了JDBC錯誤,表明該事務不存在。
我該怎么做? 在自己的事務中運行存儲過程? (不確定如何)
謝謝您的幫助
回答我自己的問題,這種執行存儲過程的方法是EJB中的子方法,但它不是業務接口的一部分,顯然在這種情況下不會創建新事務(即使使用REQUIRES_NEW),如果我錯誤。
我最終將方法移動到另一個EJB,並使用@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
注釋了該方法,並通過
@Resource
protected SessionContext ctx;
並做ctx.setRollbackOnly();
當我需要回滾存儲過程的更改而又不回滾外部事務的更改時。
這對我來說很好,但是,如果我有任何問題,請隨時糾正我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.