我收到一個錯誤IllegalStateException:會話/EntityManager 已關閉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); } } .... }執行此操作時出現異常:List<Object[]> results = query.getResultList();如果我使用相同的方法,但使用具有單獨輸出的程序,一切都很好。但我用游標得到了這個例外。github項目:https ://github.com/betray32/HibernateSpring
1 回答
白衣染霜花
TA貢獻1796條經驗 獲得超10個贊
您必須query.execute(); 從您的代碼中刪除;當使用REF_CURSORand 獲取數據時必須使用query.getSingleResult()orquery.getResultList(); 如果有輸出參數,則必須在此行之后訪問。使用query.execute()或不使用query.executeUpdate()時。resultSet
添加回答
舉報
0/150
提交
取消
