org.hibernate.dialent.oracle10galent不支持通过存储过程生成的结果集
我试图用JPA2.1(Hibernate4.3.5)调用数据库存储过程(Oracle10g)。该过程在输出游标中返回结果: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
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)