[英]How can i do a Transactional method in Liferay 7.3?
我創建了一個scheduler
,在同一事務中刪除DB
中的行並在刪除后插入新行。 但是如果添加行失敗,我會丟失我的數據,因為刪除是正確的。 如何使用同一事務刪除和添加以避免在發生錯誤時丟失數據? 我想在同一個表中進行刪除和兩個不同的添加。
有以下三種情況:
如果您的代碼是一切開始的方法,則由服務生成器生成的 LocalServiceImpl class 方法:
如果您的代碼在 MVCActionCommand 中,您可以使用 BaseTransactionalMVCActionCommand 作為父 class 並在doTransactionalCommand方法中實現您的代碼。
如果您的代碼在 LocalServiceImpl 類之外,您始終可以使用 TransactionInvokerUtil 手動創建事務:
import com.liferay.portal.kernel.transaction.*; import com.liferay.portal.kernel.service.*; import java.util.concurrent.*; private _invokeTransactionally(Callable callable) throws Throwable { Class<?>[] rollbackForClasses = new Class<?>[1]; rollbackForClasses[0]=Exception.class; try { TransactionInvokerUtil.invoke( TransactionConfig.Factory.create( Propagation.REQUIRED, rollbackForClasses), callable); } catch(Exception e) { // handle the exception } } Callable callable = new Callable<Void>() { Void call() throws Exception { // here insert your code return null; } }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.