Java 带游标的spring数据jpa 1.11.16存储过程
我无法在SpringDataJPA(版本1.11.16)和oracle服务器中使用游标存储过程 存储库: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")
@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>