spring-data-jpa 1.11.16 хранимая процедура с курсором - PullRequest
0 голосов
/ 11 декабря 2018

Я не могу использовать хранимую процедуру с курсором в 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>

1 Ответ

0 голосов
/ 11 декабря 2018

Скорее всего, проблема не в версии spring-data, а в версии и / или конфигурации Hibernate.

Внимательно проверьте сообщение об ошибке:

java.lang.UnsupportedOperationException: org.hibernate.dialect.Oracle9iDialect не поддерживает наборы результатов с помощью хранимых процедур

Ошибка говорит о том, что диалект Oracle9, используемый Hibernate, не поддерживает чтение данных из хранимых процедур.Таким образом, источником проблемы является Hibernate, а не Spring Data.

Если вы попытаетесь выполнить быстрый поиск с помощью сообщения об ошибке, вы получите следующую полезную тему:

java.lang.UnsupportedOperationException: org.hibernate.dialect.Oracle10gDialect не поддерживает наборы результатов с помощью хранимых процедур

Согласно этому сообщению, мне, вероятно, потребуется обновить версию hibernate до 5.1 и версию диалекта (oracle 9 до 10).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...