如何使用EntityManager来调用java存储过程?

时间:2017-06-07 06:43:08

标签: java entitymanager java-stored-procedures

我正在尝试调用java sp,它具有像

这样的选择查询
Select a.name, b.age from tablea a, tableb b where a.emp=b.emp;

我不知道如何为此创建实体类以及如何调用。

我做了类似的编码,其中java sp中有一个输入,select查询只涉及一个表。

请找到相同的演示代码

实体类

    @NamedStoredProcedureQuery
    (name="test",
    procedureName="GETALLOP",
    resultClasses=AfltModel.class,
    parameters={
@StoredProcedureParameter(mode = ParameterMode.IN, name = "someinput", type = Integer.class),
            @StoredProcedureParameter(mode = ParameterMode.OUT, name = "OUT_RETURN_CODE", type = Integer.class),
            @StoredProcedureParameter(mode = ParameterMode.OUT, name = "OUT_RETURN_MESSAGE", type = String.class),
            @StoredProcedureParameter(mode = ParameterMode.OUT, name = "OUT_MESSAGE_SOURCE", type = String.class)
    })


    @Entity
    @Data
    public class AfltModel {

        @Id
        @Column(name="FUTR.CORP_CUST_ID")
        int corpcustid;
        @Column(name="FUTR.AFLT_CUST_ID")
        String afltcustid;
    }

执行类

@Component
public class ServiceClass {

    @Autowired
    EntityManager entityManager;

    public List<List<AfltAcctModel>>  getdata(List<Integer> inputList) {

        List<List<AfltAcctModel>> list = inputList.stream()
                .map(id -> entityManager
                .createNamedStoredProcedureQuery("test").setParameter("IN_ACCT_ID", id)
                .getResultList())
                .collect(Collectors.toList());

        return list;

    }
}

如果我们必须使用entitymanger调用java sp并且sp没有接受任何输入并且如上所述有多个表,请告诉我们如何实现相同目的。

0 个答案:

没有答案