我使用 hibernate3 并没有使用 JPA 我在 oracle 中有一个过程返回 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 调用这个过程
我尝试使用 native 查询但没有成功使用此代码:
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();
}
但问题是如何使用 hibernate 调用带有 2 个输出参数的过程。
最佳答案
您必须使用 CallableStatement 和 registerOutParameter。 您可以从 hibernate session 获取连接并创建可调用语句。 hibernate 没有提供处理这个问题的机制(至少据我所知)。 我希望这有帮助。
关于java - hibernate3中不带参数的调用过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53122707/