我有一个Java项目,我使用Hibernate调用存储过程。
下面是我使用的示例代码
public String findCloudName(Long cloudId) {
LOG.info("Entered findCloudName Method - cloudId:{}", cloudId);
String cloudName = null;
ProcedureCall procedureCall = currentSession().createStoredProcedureCall("p_getCloudDetails");
procedureCall.registerParameter( "cloudId", Long.class, ParameterMode.IN ).bindValue( cloudId );
procedureCall.registerParameter( "cloudName", String.class, ParameterMode.OUT );
ProcedureOutputs outputs = procedureCall.getOutputs();
cloudName = (String) outputs.getOutputParameterValue( "cloudName" );
LOG.info("Exiting findCloudName Method - cloudName:{}", cloudName);
return cloudName;
}
字符串
这工作正常,并产生预期的结果。然而,它在我的日志中留下了以下消息
[WARN] [320]org.hibernate.procedure.internal.ProcedureCallImpl[prepareForNamedParameters] - HHH000456: Named parameters are used for a callable statement, but database metadata indicates named parameters are not supported.
型
我在浏览网站和Hibernate的源代码,试图找出如何摆脱这个警告
任何帮助都非常感谢
干杯达米安
2条答案
按热度按时间bjg7j2ky1#
它与HHH-8740的校正有关:
在某些情况下,数据库元数据是不正确的(即,说不支持某些东西,而实际上它是支持的)。在这种情况下,最好简单地记录警告。如果事实证明命名参数确实不受支持,那么当命名参数绑定到SQL语句时,将抛出SQLException。
因此,警告警告您不要调用查询命名参数的元数据的方法。
uidvcgyl2#
字符串