вызов процедуры без параметров в hibernate3 - PullRequest
0 голосов
/ 02 ноября 2018

Я работаю с Hibernate3 и не использовал JPA У меня есть процедура в оракуле, которые возвращают 2 из параметра Для теста я выполняю эту процедуру в Oracle с этим запросом.

declare

req_type  number;
req_seq  number;

begin

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

Теперь я хочу вызвать эту процедуру, используя hibernate

Я пытаюсь с собственным запросом без успеха, используя этот код:

public void insertReq(String numEmp) {

                    int req_type  ;
                    int req_seq;


                    String sql = " insert_req(1111,:in1,:in2) ";
                    SQLQuery query = session.createSQLQuery(sql);
                    query.setParameter("in1", req_type); 
                    query.setParameter("in2", req_seq); 
                    List results = query.list();

                    System.out.println(req_type);
                    System.out.println(req_seq);

                    }

когда у меня есть функция, я могу запустить ее, используя hibernate, используя этот код в качестве примера:

public void insertOrder(String numEmp) {

            String query = "call  insert_order(" + numEmp + ",50)";


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

        }

но проблема в том, как вызвать процедуру с параметром 2 out, используя hibernate.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Попробуйте и дайте мне знать.

EntityManager em = emf.createEntityManager();
em.getTransaction().begin();

Session session = em.unwrap(Session.class);
session.doWork(new Work() {

    @Override
    public void execute(Connection con) throws SQLException {
        // do something useful
        try (CallableStatement stmt = con.prepareCall("{call my_sp()}")) {
            stmt.execute();
        }
    }
});

em.close();

С уважением.

0 голосов
/ 02 ноября 2018

Вы должны использовать CallableStatement и registerOutParameter. вы можете получить соединение из вашего спящего сеанса и создать вызываемое состояние. Hibernate не обеспечивает механизм для решения этой проблемы (по крайней мере, как я знаю). Надеюсь, это поможет.

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