需求:在某張表插入,修改時,調用一個存儲過程同步數據 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進行調用存儲過程,
若是你嘗試這樣作,我碰到有兩個問題,一個是說沒有加入事務,另外一個問題是,沒法共用一個事務,若是沒法解決這兩個問題,按照我上面的作法便可。