使用NamedParameterJdbcTemplate调用PL / pgSQL函数

时间:2015-05-27 09:00:33

标签: java postgresql plpgsql jdbctemplate

我有一个带有以下函数头的PL / pgSQL函数:

CREATE OR REPLACE FUNCTION create_workflow_archive(VARCHAR(6),BYTEA[]) RETURNS SETOF TEXT

该功能已成功测试。 所以我想用spring框架的NamedParameterJdbcTemplate调用该函数。我的java代码如下:

    String mId; List<byte[]> datas; // Has a valid value
    String sql = "SELECT * FROM create_workflow_archive(:mid, ARRAY[:datas])";
    NamedParameterJdbcTemplate createArchive = new NamedParameterJdbcTemplate(this.dataSource);
    MapSqlParameterSource parameters = new MapSqlParameterSource();
    parameters.addValue("mid", mId, Types.VARCHAR);
    parameters.addValue("datas", datas);
    return createArchive.query(sql, parameters, new RowMapper<UUID>() {
        public UUID mapRow(ResultSet resultSet, int i) throws SQLException {
            return UUID.fromString(resultSet.getString("data"));
        }
    });

但我收到了例外:

org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter 'datas]': No value registered for key 'datas]'

如何正确调用PL / pgSQL函数的JdbcTemplate语法?

0 个答案:

没有答案