3

由于遗留原因,我们有很多代码位于存储过程下。与 Spring 数据(@Procedure)类似,micronaut 中是否有调用存储过程的方法。我是否必须注入 entityManager 并使用 CreateNamedStoredProcedureQuery()。

    List<String> results = entityManager.createNamedStoredProcedureQuery("procedureA")
                .setParameter(0 , param1)
                .setParameter(0 , param2)
                 ....
                .setParameter(20 , param20)
                .getResultList();
4

1 回答 1

0

下面的代码在 micronaut 中为我工作,用于调用 StoredProcedure -

@Inject
private EntityManager em;

@Transactional
@Override
public int callSP(int num) {
    StoredProcedureQuery query = em.createStoredProcedureQuery("storelist.testSP1")
                                    .registerStoredProcedureParameter("InputInt", Integer.class, ParameterMode.IN)
                                    .registerStoredProcedureParameter("OutputInt", Integer.class, ParameterMode.OUT)
                                    .setParameter("InputInt", num);
    query.execute();
    Integer result = (Integer) query.getOutputParameterValue("OutputInt");
    
    return result;
}
于 2021-03-10T12:16:18.000 回答