如何从JPA调用返回UUID的SQL函数?

时间:2017-03-21 13:48:50

标签: java sql postgresql jpa sql-function

我有像这样的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),但这也没有用。有没有办法可以指定另一种类型作为返回值?

0 个答案:

没有答案