我有像这样的SQL函数
CREATE FUNCTION uuidRequirement(name CHARACTER VARYING, type CHARACTER VARYING)
RETURNS UUID AS $$
BEGIN
RETURN uuid_generate_v5(uuid_ns_dns(), 'requirement' || $1 || $2);
END;
$$ LANGUAGE plpgsql
我需要调用并获取我的java代码中返回的uuid。我有这个java代码
StoredProcedureQuery storedProcedure = em.createStoredProcedureQuery("uuidRequirement");
storedProcedure.registerStoredProcedureParameter("name", String.class, ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter("type", String.class, ParameterMode.IN);
storedProcedure.registerStoredProcedureParameter("id", UUID.class, ParameterMode.OUT);
storedProcedure.setParameter("name", name);
storedProcedure.setParameter("type", type == null ? "" : type);
storedProcedure.execute();
但我一直收到错误
A CallableStatement function was executed and the out parameter 1 was of type java.sql.Types=1111 however type java.sql.Types=12 was registered.
1111是另一种类型,12是varchar。我也尝试使用select from function('uuidRequirement', :name, :type)
,但这也没有用。有没有办法可以指定另一种类型作为返回值?