【发布时间】:2017-06-14 06:06:22
【问题描述】:
我是休眠的新手我想知道我们是否可以从休眠中调用程序。如果我们可以打电话给我,请给我一些例子。(我的程序将有多个输出参数)
【问题讨论】:
-
是的,这是可能的。发帖前你环顾四周了吗? (例如,请参阅here)。
我是休眠的新手我想知道我们是否可以从休眠中调用程序。如果我们可以打电话给我,请给我一些例子。(我的程序将有多个输出参数)
【问题讨论】:
首先你必须获取当前会话并开始交易:
session = sessionFactory.getCurrentSession();
session.beginTransaction();
接下来您使用方法createStoredProcedureQuery 创建存储过程。它接受过程名称(“listPhones”)作为参数:
StoredProcedureQuery procedure = session.createStoredProcedureQuery("listPhones");
接下来您需要注册所有输入和输出参数。使用方法registerStoredProcedureParameter。它的第一个 arg 是从 0 开始的参数索引,第二个 arg 是 sql 类型的 java 类型。 Sql varchar 在 java 中是 String。第三个参数是
javax.persistence.ParameterMode 枚举。可以是IN 或OUT, INOUT,REF_CURSOR。
procedure.registerStoredProcedureParameter(0, String.class, ParameterMode.IN);
procedure.registerStoredProcedureParameter(1, String.class, ParameterMode.OUT);
最后你必须通过索引设置注册参数:
procedure.setParameter(0, "22222287832,33333287832");
procedure.setParameter(1, string);
【讨论】: