postgresql - JPA - 使用 varchar 调用 postgresql 函数时为 "No Dialect mapping for JDBC type: 1111"

标签 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

最佳答案

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

关于postgresql - JPA - 使用 varchar 调用 postgresql 函数时为 "No Dialect mapping for JDBC type: 1111",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45623166/

相关文章:

hibernate - 在哪里可以找到 mavenized hibernate-annotations 3.6.10

hibernate - 如何在hql中使用来自select的更新?

java - 在jpa中调用序列的下一个值

postgresql - 将数据从 S3 复制到 Redshift

multithreading - Postgresql FOR UPDATE SKIP LOCKED 仍然选择重复的行

postgresql - 在 Postgresql 中按 DateTime 的日期分组

java - 什么时候使用验证?

java - 使用复合Where子句的JPA查询效率低下

hibernate - 仅对对象使用 JPQL 选择列的子集

node.js - 使用 sequelize 进行子查询以使用日期和时间过滤即将发生的事件