在调用使用REF_CURSOR
作为结果返回@NamedStoredProcedureQuery
作为结果的存储过程时,会收到类似“没有查询来映射名称为null的null的错误。”
使用Callable
语句可以调用相同的过程。
但是当我尝试其他过程(将OUT
参数作为输出返回)工作正常时。
@NamedStoredProcedureQuery(
name = "test1",
procedureName = "test1",
resultClasses = Result.class,
parameters = {
@StoredProcedureParameter(mode = ParameterMode.REF_CURSOR, type = void.class),
@StoredProcedureParameter(mode = ParameterMode.IN, type = Long.class,name = "ID")
}
)
EntityManagerFactory factory = Persistence.createEntityManagerFactory("persistenceUnit");
EntityManager manager = factory.createEntityManager();
StoredProcedureQuery q = manager.createNamedStoredProcedureQuery("test1");
manager.getTransaction().begin();
q.setParameter("ID",5);
q.execute();
List<Result> resultList = (List<Result>)q.getResultList();
期待的事情:
List<Result> resultList = (List<Result>)q.getResultList();
执行此行后,结果应映射到resultList
。