【问题标题】:Java - Hibernate calling a MySql Stored Procedure - Warning MessageJava - Hibernate 调用 MySql 存储过程 - 警告消息
【发布时间】:2015-05-12 22:25:52
【问题描述】:

我有一个 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 的源代码,试图找出如何摆脱这个警告

非常感谢任何帮助

干杯 达米安

【问题讨论】:

    标签: java mysql spring hibernate stored-procedures


    【解决方案1】:

    HHH-8740的更正有关:

    在某些情况下,数据库元数据不正确(即表示不支持某些内容,但实际上支持)。在这种情况下,最好只记录一个警告。如果确实不支持命名参数,那么稍后将命名参数绑定到SQL语句时会抛出SQLException。

    因此,警告警告您不要调用查询命名参数元数据的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-20
      • 2013-05-18
      • 2012-12-30
      • 2012-11-19
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多