Hibernate Falsley警告名称参数不受支持

时间:2018-02-23 21:20:51

标签: java spring hibernate jpa

我开始在日志中看到此警告:

  

HHH000456:命名参数用于可调用语句,但数据库元数据表示不支持命名参数。

这是由这条线引起的

query.registerStoredProcedureParameter(RECORD_ID, String.class, ParameterMode.IN);

深入了解Hibernate实现会显示记录警告的行

private void prepareForNamedParameters() {
    if (this.parameterStrategy == ParameterStrategy.POSITIONAL) {
        throw new QueryException("Cannot mix named and positional parameters");
    } else {
        if (this.parameterStrategy == ParameterStrategy.UNKNOWN) {
            ExtractedDatabaseMetaData databaseMetaData = ((JdbcEnvironment)this.getSession().getJdbcCoordinator().getJdbcSessionOwner().getJdbcSessionContext().getServiceRegistry().getService(JdbcEnvironment.class)).getExtractedDatabaseMetaData();
            if (!databaseMetaData.supportsNamedParameters()) { // true, :picard-facepalm:
                LOG.unsupportedNamedParameters();
            }

            this.parameterStrategy = ParameterStrategy.NAMED;
        }

    }
}

所以我做了一些调查,结果是:

SessionImplementor sessionImp = (org.hibernate.engine.spi.SessionImplementorSessionImplementor) entityManager.getDelegate();
DatabaseMetaData metadata = sessionImp.connection().getMetaData();        
metadata.supportsNamedParameters();  // true

令人困惑。

思考?我错过了什么?我们有一个2016 MySQL数据库。

0 个答案:

没有答案