需求:在某张表插入,修改时,调用一个存储过程同步数据 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进行调用存储过程,
若是你尝试这样作,我碰到有两个问题,一个是说没有加入事务,另外一个问题是,没法共用一个事务,若是没法解决这两个问题,按照我上面的作法便可。