вызов процедуры pl / sql в oracle из Hibernate с возвращаемым параметром - PullRequest
0 голосов
/ 29 октября 2018

У меня есть функция PL / SQL, эта функция возвращает два параметра: req_type и req_seq.

это код PL / SQL.

declare
    req_type number;
    req_seq  number;

    TEST_PKG.insert_req(001,req_type,req_seq );
    dbms_output.put_line('req_type='||req_type);
    dbms_output.put_line('req_seq='||req_seq);
end;

Мне нужно вызвать эту функцию из Hibernate.

Я не нашел точного способа сделать эту работу из спящего режима

Я пытался использовать этот код:

public EmpEntity insertReq(String numEmp) {
    String query = " call TEST_PKG.insert_req(" + numEmp + ",req_type,req_seq ) " ;

    SQLQuery sqlQuery = this.getSession().createSQLQuery(query);
    sqlQuery.executeUpdate();

    sqlQuery.setResultTransformer(Transformers.aliasToBean(
            EmpEntity.class));

    List<EmpEntity> list = sqlQuery.list();

    EmpEntity empEntity=list.get(0);
    empEntity.setRequestType(.....);
    empEntity.setRequestSec(....);

    return empEntity;
}

1 Ответ

0 голосов
/ 29 октября 2018

Вы можете попробовать ниже. Здесь мы устанавливаем параметры входа и выхода перед выполнением.

StoredProcedureQuery query = entityManager
        .createStoredProcedureQuery("proc_name")
        .registerStoredProcedureParameter(1, Long.class, 
            ParameterMode.IN)
        .registerStoredProcedureParameter(2, Long.class, 
            ParameterMode.OUT);

    query.execute();

    Long res = (Long) query.getOutputParameterValue(2);

Вы можете заменить Вы можете найти документы для StoredProcedureQuery здесь https://docs.jboss.org/hibernate/jpa/2.1/api/javax/persistence/StoredProcedureQuery.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...