我收到一個錯誤IllegalStateException:會話/EntityManager 已關(guān)閉StoredProcedureQuery與 Oracle 存儲過程SYS_REFCURSOR和.使用 Spring Boot + spring-boot-starter-data-jpa@Repositorypublic class HibernateTestingDao implements CommandLineRunner {... /** * Conector con la base de datos */ @PersistenceContext private EntityManager entityManager; /** * Properties */ @Autowired private CustomYMLFile properties; /** * Ejecucion automatica */ @Override public void run(String... args) throws Exception { log.info("Iniciando la Ejecucion"); procedureSalidaCursor(); log.info("La ejecucion del proceso ha finalizado"); } /** * Salida Cursor */ private void procedureSalidaCursor() { log.info("Conectando al procedure : " + properties.getProcedureSalidaCursor()); try { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); java.sql.Date fechaQuery = new java.sql.Date(df.parse("2017-07-17").getTime()); StoredProcedureQuery query = entityManager /* * Procedure a llamar */ .createStoredProcedureQuery(properties.getProcedureSalidaCursor()) /* * Entradas */ .registerStoredProcedureParameter(1, Date.class, ParameterMode.IN) .registerStoredProcedureParameter(2, String.class, ParameterMode.IN) /* * Salidas */ .registerStoredProcedureParameter(3, void.class, ParameterMode.REF_CURSOR) } catch (Exception e) { log.error("Error al consultar BD , Detalle > ", e); } } .... }執(zhí)行此操作時出現(xiàn)異常:List<Object[]> results = query.getResultList();如果我使用相同的方法,但使用具有單獨輸出的程序,一切都很好。但我用游標(biāo)得到了這個例外。github項目:https ://github.com/betray32/HibernateSpring
1 回答

白衣染霜花
TA貢獻(xiàn)1796條經(jīng)驗 獲得超10個贊
您必須query.execute();
從您的代碼中刪除;當(dāng)使用REF_CURSOR
and 獲取數(shù)據(jù)時必須使用query.getSingleResult()
orquery.getResultList();
如果有輸出參數(shù),則必須在此行之后訪問。使用query.execute()
或不使用query.executeUpdate()
時。resultSet
添加回答
舉報
0/150
提交
取消