如何使用带有void返回参数的JPA 2.1 @NamedStoredProcedureQueries?

时间:2014-06-26 10:12:03

标签: java hibernate postgresql jpa

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

@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

如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

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

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

将resultSetMappings添加到@NamedStoredProcedureQuery

 resultSetMappings = {
        "VOID_MAPPING"
 }

VoidClass只是一个空类。

public class VoidClass {}

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