[英]Hibernate stored procedure - not known to support REF_CURSOR parameters
您好,我是Oracle存儲過程,我有過程名稱Test和2個參數in- > x IN VARCHAR2 , out- > REF_CURSOR in 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();
}
}
session.beginTransaction();
// Call stored procedure
session.doWork(connection -> {
String query;
query = "{CALL TEST(?,?) }";
String val = txt_uniquecode.getText();
CallableStatement callableStatement = connection.prepareCall(query);
callableStatement.setString(1, val);
callableStatement.registerOutParameter(2, OracleTypes.CURSOR);
callableStatement.executeUpdate();
ResultSet rs = (ResultSet) callableStatement.getObject(2);
while (rs.next()) {
System.out.println(rs.getString("NAME"));
}
});
// end
session.getTransaction().commit();
dbUtilSingleton.closeConnection();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.