Я не могу использовать хранимую процедуру с курсором в spring-data-jpa (версия 1.11.16) и сервере Oracle.
Репозиторий:
@Repository
public interface GeoRegionRepository extends CrudRepository<PocRegions, String> {
@Procedure(name = "PocRegions.getRegion", procedureName = "POC_PKG_GEO.PRO_RETURN_REGION")
List<PocRegions> getRegion(@Param("id_region") BigDecimal regionId);
}
Аннотацияна объекте:
@Entity
@Table(name = "POC_REGIONS")
@NamedStoredProcedureQueries({
@NamedStoredProcedureQuery( name = "PocRegions.getRegion", procedureName = "POC_PKG_GEO.PRO_RETURN_REGION",
resultClasses = PocRegions.class ,parameters = {
@StoredProcedureParameter(mode = ParameterMode.IN, name = "id_region", type = BigDecimal.class),
@StoredProcedureParameter(mode = ParameterMode.REF_CURSOR, name = "o_cursor", type = Void.class)})
})
это ответ java при вызове:
geoRegionRepo.getRegion(id)
↓
2018-12-11 13: 07: 26.047DEBUG 24164 --- [nio-9090-exec-2] org.hibernate.SQL: {call POC_PKG_GEO.PRO_RETURN_REGION (?,?)} Hibernate: {вызов POC_PKG_GEO.PRO_RETURN_REGION (?,?)} 2018-12-11 13: 07: 27.410 TRACE 24164 --- [nio-9090-exec-2] ohtype.descriptor.sql.BasicBinder: параметр привязки [id_region] для [NUMERIC] - [1] 2018-12-11 13: 07: 27.658 WARN24164 --- [nio-9090-exec-2] .mmaExceptionHandlerExceptionResolver: Resolved [java.lang.UnsupportedOperationException: org.hibernate.dialect.Oracle9iDialect не поддерживает наборы результатов с помощью хранимых процедур]
I 'Я не уверен, возможно ли использовать курсор с этой старой версией данных Spring или нет.Что я должен сделать, чтобы использовать spring-data-jpa и вызвать процедуру?
Спасибо
РЕДАКТИРОВАТЬ 1:
я добавил в свое приложение.properties следующей строки:
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
и добавил это к pom (исключая конфликт гибернации в уменьшении зависимости spring-data-jpa):
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-tools</artifactId>
<version>${hibernate.version}</version>
</dependency>