Сведения о проблеме
Мы работаем над приложением Spring Boot, в котором мы подключаемся к хранимым процессам (все возвращающие несколько прекурсоров), используя @NamedStoredProcedureQuery
для Oracle 11g DB. Мы не можем прочитать данные со второго курсора одновременно. Как только мы предоставляем второй класс результата для второго рефкурсора, мы получаем исключение под названием Invalid Column Name
. Курсор чтения 1 работает нормально.
Сведения об исключении
javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException:
Error extracting results from CallableStatement Caused by:
java.sql.SQLException: Invalid column name
Сведения о реализации
- ЗАПРОС ХРАНЕННОЙ ПРОЦЕДУРЫ
@NamedStoredProcedureQuery (
name = "getSP1Data",
procedureName = "package_name",
resultClasses = {Cursor1Response.class, Cursor2Response.class},
parameters = {
@StoredProcedureParameter(type = Integer.class, mode = ParameterMode.IN, name = "in_param_1"),
@StoredProcedureParameter(type = void.class, mode = ParameterMode.REF_CURSOR, name = "cursor_1"),
@StoredProcedureParameter(type = void.class, mode = ParameterMode.REF_CURSOR, name = "curosr_2"),
@StoredProcedureParameter(type = String.class, mode = ParameterMode.INOUT, name = "in_out_param_2") }
)
@Entity
public class Cursor1Response {
@Id
@Column(name = "column_name_1")
private Date column1;
@Column(name = "column_name_2")
private Double column2;
}
@Entity
public class Cursor2Response {
@Id
@Column(name = "column_name_1")
private Date column1;
@Column(name = "column_name_2")
private Double column2;
}
- РЕАЛИЗАЦИЯ СЛОЯ DAO (ОТ ГДЕ МЫ НАСТОЯЩИМ НАЗЫВАЕМ НАШ ХРАНЕНОЙ PRO C QUERY)
StoredProcedureQuery query = entityManager.createNamedStoredProcedureQuery("getSP1Data");
// Code for setting all in params
query.getResultList(); // While execution of this line it is
throwing the above mentioned exception
Кто-нибудь работал над таким сценарием и есть идеи, как исправить это исключение?