Java 带游标的spring数据jpa 1.11.16存储过程

Java 带游标的spring数据jpa 1.11.16存储过程,java,sql-server,spring-data-jpa,cursor,Java,Sql Server,Spring Data Jpa,Cursor,我无法在SpringDataJPA(版本1.11.16)和oracle服务器中使用游标存储过程 存储库: @Repository public interface GeoRegionRepository extends CrudRepository<PocRegions, String> { @Procedure(name = "PocRegions.getRegion", procedureName = "POC_PKG_GEO.PRO_RETURN_REGION")

我无法在SpringDataJPA(版本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);
}
这就是我调用时的java响应:

geoRegionRepo.getRegion(id)

2018-12-11 13:07:26.047调试24164---[nio-9090-exec-2] org.hibernate.SQL: {调用POC_PKG_GEO.PRO_RETURN_REGION(?)}休眠: {调用POC_PKG_GEO.PRO_RETURN_REGION(?),2018-12-11 13:07:27.410 TRACE 24164---[nio-9090-exec-2]o.h.type.descriptor.sql.BasicBinder :绑定参数[id_region]为[NUMERIC]-[1]2018-12-11 13:07:27.658警告24164---[nio-9090-exec-2] .m.m.a.例外处理程序例外解析程序:已解决 [java.lang.UnsupportedOperationException: org.hibernate.dial.Oracle9iDialect不支持通过 存储过程]

我不确定是否可以将游标与这个旧版本的spring数据一起使用。我应该如何使用spring数据jpa并调用该过程

多谢各位

编辑1:

我在application.properties中添加了以下行:

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
并将其添加到pom中(不包括spring数据jpa中的hibernate冲突) 依赖项的去极化):


org.hibernate
休眠工具
${hibernate.version}

最可能的问题不是spring数据的版本,而是Hibernate版本和/或配置

仔细检查错误消息:

java.lang.UnsupportedOperationException:org.hibernate.dial.Oracle9iDialect不支持通过存储过程生成的结果集

错误表明Hibernate使用的Oracle9方言不支持从存储过程读取数据。因此,问题的根源是Hibernate,而不是Spring数据

如果您尝试使用错误消息进行快速搜索,您将得到以下有用的线索:


根据这篇文章,我可能需要将您的hibernate版本升级到5.1和方言版本(oracle 9到10)。

添加hibernate core的5.3.7.Final版本,我可以将哪一个最新版本集成到我的oracle方言项目中?实际上,我使用的是:ojdbc7 12.1.0.2当您更改application.properties文件时,您似乎已经升级了方言do Oracle 10。是的,我在我的评论后找到了答案:)我又问了一个问题,如果您能帮我,那就太好了。非常感谢。
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-tools</artifactId>
    <version>${hibernate.version}</version>
</dependency>