给定以下带注释的命名存储过程查询:

@NamedStoredProcedureQueries({
    @NamedStoredProcedureQuery(
        name = "procedureName",
        procedureName = "stored_procedure"
    )
})

然后执行:
StoredProcedureQuery query = entityManager.createNamedStoredProcedureQuery("procedureName");
query.executeUpdate();

stored_procedure返回postgres void

结果例外:Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111

如何解决?

最佳答案

我通过使用一些拐杖代码解决了这个问题。

@SqlResultSetMapping(
    name = "VOID_MAPPING",
    classes = {
        @ConstructorResult(targetClass = VoidClass.class, columns = {})
    }
)

将resultSetMappings添加到@NamedStoredProcedureQuery
 resultSetMappings = {
        "VOID_MAPPING"
 }

VoidClass只是一个空类。
public class VoidClass {}

但是,我希望有一个更好的解决方案。

10-06 02:14