簡體   English   中英

JPA(休眠)XA數據源在事務中執行存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM