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进行调用存储过程,

若是你尝试这样作,我碰到有两个问题,一个是说没有加入事务,另外一个问题是,没法共用一个事务,若是没法解决这两个问题,按照我上面的作法便可。

相关文章
相关标签/搜索