Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
org.hibernate.dialent.oracle10galent不支持通过存储过程生成的结果集_Hibernate_Jpa_Cursor - Fatal编程技术网

org.hibernate.dialent.oracle10galent不支持通过存储过程生成的结果集

org.hibernate.dialent.oracle10galent不支持通过存储过程生成的结果集,hibernate,jpa,cursor,Hibernate,Jpa,Cursor,我试图用JPA2.1(Hibernate4.3.5)调用数据库存储过程(Oracle10g)。该过程在输出游标中返回结果: PROCEDURE GET_EMPLOYEE( P_ID_EMP IN VARCHAR2, P_CURSOR OUT TYPES.cursor_type ) AS ... Java代码: @NamedStoredProcedureQuery(name = "Employee.findById", resultClasses = Em

我试图用JPA2.1(Hibernate4.3.5)调用数据库存储过程(Oracle10g)。该过程在输出游标中返回结果:

PROCEDURE GET_EMPLOYEE(
  P_ID_EMP  IN       VARCHAR2,
  P_CURSOR   OUT   TYPES.cursor_type
)
AS ...
Java代码:

@NamedStoredProcedureQuery(name = "Employee.findById", 
    resultClasses = Employee.class, 
    procedureName = "GET_EMPLOYEE", 
    parameters = {
        @StoredProcedureParameter(mode = ParameterMode.IN, name = "P_ID_EMP", type = String.class),
        @StoredProcedureParameter(mode = ParameterMode.REF_CURSOR, name = "P_CURSOR", type = void.class) 
    }
)
电话:

同样的代码在使用Eclipselink 2.5.1时非常有效(但不能使用它)

我知道我可以从entitymanager获得JDBC连接,并使用经典的Resultset工具来检索结果,但我想使用JPA2.1-Hibernate


谢谢。

似乎你并不孤单,这是否回答了你的问题?
StoredProcedureQuery query = em.createNamedStoredProcedureQuery("Employee.findById");
query.setParameter("P_ID_EMP", "ID00001");
List<Employee> employees = query.getResultList(); //exception launched here
Exception in thread "main" java.lang.UnsupportedOperationException: org.hibernate.dialect.Oracle10gDialect does not support resultsets via stored procedures
    at org.hibernate.dialect.Dialect.registerResultSetOutParameter(Dialect.java:1612)
    at org.hibernate.engine.jdbc.cursor.internal.StandardRefCursorSupport.registerRefCursorParameter(StandardRefCursorSupport.java:94)
    at org.hibernate.procedure.internal.AbstractParameterRegistrationImpl.prepare(AbstractParameterRegistrationImpl.java:298)
    at org.hibernate.procedure.internal.ProcedureCallImpl.buildOutputs(ProcedureCallImpl.java:417)
    at org.hibernate.procedure.internal.ProcedureCallImpl.getOutputs(ProcedureCallImpl.java:378)
    at org.hibernate.jpa.internal.StoredProcedureQueryImpl.outputs(StoredProcedureQueryImpl.java:251)
    at org.hibernate.jpa.internal.StoredProcedureQueryImpl.getResultList(StoredProcedureQueryImpl.java:334)