未知方言支持 REF_CURSOR 参数
Posted
技术标签:
【中文标题】未知方言支持 REF_CURSOR 参数【英文标题】:Dialect not known to support REF_CURSOR parameters 【发布时间】:2020-11-17 06:50:50 【问题描述】:在 Spring Boot 应用程序中,我正在使用 StoredProcedureQuery 向 oracle db 发出请求
StoredProcedureQuery query = entityManager.createNamedStoredProcedureQuery("checkTest");
query.registerStoredProcedureParameter(2, String.class, ParameterMode.IN);
query.registerStoredProcedureParameter(3, String.class, ParameterMode.IN);
query.registerStoredProcedureParameter(4, Integer.class, ParameterMode.IN);
query.registerStoredProcedureParameter(1, Void.class, ParameterMode.REF_CURSOR);
query.setParameter(2, dto.getIdentity());
query.setParameter(3, dto.getSourceIp());
query.setParameter(4, dto.getSource()); query.execute();
这是我的 plsql 响应
但是在我的代码中我得到了错误
QueryException: Dialect [org.hibernate.dialect.mysql5Dialect] not known to support REF_CURSOR parameters
【问题讨论】:
您使用的是 Oracle 吗?为什么不使用 org.hibernate.dialect.OracleDialect 而不是 org.hibernate.dialect.MySQL5Dialect? 是的,我正在使用 oracle 【参考方案1】:您需要根据您正在使用的数据库指定适当的方言。
在这种 Hibernate 5.4 的情况下,尝试:
org.hibernate.dialect.Oracle10g 用于 Oracle 10g 或, org.hibernate.dialect.Oracle12cDialect 适用于 Oracle 12c。https://docs.jboss.org/hibernate/orm/5.4/javadocs/
另一方面,如果你在 MySQL 上使用了这个存储过程,它不会工作,因为 MySQL 驱动程序不支持 REFCURSOR 参数。
【讨论】:
以上是关于未知方言支持 REF_CURSOR 参数的主要内容,如果未能解决你的问题,请参考以下文章
Nhibernate - 方言不支持 DbType.Double