JPA - "没有JDBC类型的Dialect映射:1111"用varchar调用postgresql函数时

时间:2017-08-10 20:44:21

标签: postgresql hibernate jpa

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

有什么想法吗?

javax.persistence.PersistenceException: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111

Java代码:

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

Postgresql功能:

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

堆栈追踪:

Stack Trace

1 个答案:

答案 0 :(得分:1)

似乎Hibernate对返回VOID的函数不满意,所以将其更改为返回INT并且最后只调用RETURN 1解决了这个问题。