spring data jpa 調用oracle 存儲過程

需求:在某張表插入,修改時,調用一個存儲過程同步數據 java

在controller層,XXX.saveOrUpdate(entity);方法的後面,ide

XXX.callXXXX(entity.getId);存儲過程接口的定義,接口

 

存儲過程調用的實現:事務

在service 定義接口 void callXXXX(String id);get

在serviceImpl 實現:同步

導入:it

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

注入:io

@PersistenceContext
private EntityManager entityManager;

方法實現:import

@Transactional
@Override
public void XXXX(String rowId) {
       //調用無返回參數的存儲過程
   Query query = entityManager.createNativeQuery("{call XXXX('xxx', '同步業務數據', 'ADA',:rowId)}").setParameter("rowId",rowId);
   query.executeUpdate();
   
}

由於個人項目存在事務的部分bug,致使沒法在service中直接調用query.executeUpdate();date

理解上面的作法的大佬能夠直接省去接口的定義和實現過程,直接注入em進行調用存儲過程,

若是你嘗試這樣作,我碰到有兩個問題,一個是說沒有加入事務,另外一個問題是,沒法共用一個事務,若是沒法解決這兩個問題,按照我上面的作法便可。

相關文章
相關標籤/搜索