JPA - 使用 varchar 调用 postgresql 函数时“没有 JDBC 类型的方言映射:1111”

Thi*_*yão 1 postgresql hibernate jpa

尝试通过 JPA api 调用 postgresql 函数时出现此异常。我在使用未知类型时看到了以下错误,但这是 String / Varchar。

有任何想法吗?

javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
Run Code Online (Sandbox Code Playgroud)

爪哇代码:

StoredProcedureQuery query = entityManager.createStoredProcedureQuery("log.uf_remove_fks")
                                          .registerStoredProcedureParameter("_schema", String.class,
                                                                            ParameterMode.IN)
                                          .setParameter("_schema", schema);
query.execute();
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 函数:

CREATE OR REPLACE FUNCTION log.uf_remove_fks(_schema VARCHAR(10))
    RETURNS VOID
AS $$
     DECLARE rec RECORD;
BEGIN
    ...
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

堆栈跟踪

Thi*_*yão 5

似乎 Hibernate 对返回 VOID 的函数不满意,因此将其更改为返回 INT 并在最后调用 RETURN 1 解决了问题。