【发布时间】:2018-12-10 14:47:30
【问题描述】:
你好,我工作 Oracle 存储过程,我有过程名称 Test 和 2 个参数 in -> x IN VARCHAR2,out -> REF_CURSOR in out SYS_REFCURSOR 。我正在尝试使用休眠调用此过程,但我有异常
线程“主”org.hibernate.QueryException 中的异常:方言 [org.hibernate.dialect.OracleDialect] 未知支持 REF_CURSOR 参数
import model.Apprisal;
import oracle.jdbc.OracleTypes;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.procedure.ProcedureCall;
import org.hibernate.procedure.ProcedureOutputs;
import org.hibernate.result.Output;
import org.hibernate.result.ResultSetOutput;
import javax.persistence.EntityManager;
import javax.persistence.ParameterMode;
import javax.persistence.StoredProcedureQuery;
import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.Types;
import java.util.List;
public class DBUtil {
public static void main(String[] args) {
// crt factiry
SessionFactory factory = new Configuration()
.configure("hibernate.cfg.xml")
//.addAnnotatedClass(Apprisal.class)
.buildSessionFactory();
// crt sesion
Session session = factory.getCurrentSession();
session.beginTransaction();
ProcedureCall call =session.createStoredProcedureCall( "{CALL TEST(?,?) }");
call.registerParameter(1, String.class, ParameterMode.IN).bindValue("12345");
call.registerParameter(2, Class.class, ParameterMode.REF_CURSOR);
Output output = call.getOutputs().getCurrent();
System.out.println("done");
factory.close();
}
}
【问题讨论】:
-
存储过程还是存储过程?
-
存储过程
标签: java oracle hibernate stored-procedures jdbc