通过Hibernate调用Postgres函数

通过Hibernate调用Postgres函数,hibernate,postgresql,postgis,postgresql-9.2,Hibernate,Postgresql,Postgis,Postgresql 9.2,我编写了一个返回类型为void的PostgreSQL函数: CREATE OR REPLACE FUNCTION queryinteriorexteriorcount() RETURNS void AS ..... 当我从pgAdmin调用该函数时,该函数按预期工作。 然而,从Hibernate调用时,我似乎无法工作。相反,我只是不断收到以下异常: failed.org.hibernate.MappingException: No Dialect mapping for JDBC type

我编写了一个返回类型为
void
的PostgreSQL函数:

CREATE OR REPLACE FUNCTION queryinteriorexteriorcount()
  RETURNS void AS .....
当我从pgAdmin调用该函数时,该函数按预期工作。 然而,从Hibernate调用时,我似乎无法工作。相反,我只是不断收到以下异常:

failed.org.hibernate.MappingException: No Dialect mapping for JDBC type: 1111
我尝试创建一种自定义方言,并按如下方式注册了我的函数:

public class PostgisDialect extends PostgisDialect {

    private static final long serialVersionUID = 3397563913838305367L;

    public PostgresDialect(){
        registerFunction("queryinteriorexteriorcount", new StandardSQLFunction("queryinteriorexteriorcount"));
    }
}
然后我更改了hibernate.cfg.xml中的方言:

<property name="dialect">at.opendata.hibernate.PostgresDialect</property>

你能告诉我如何正确调用这个函数吗?我不希望有任何返回值,我只想调用它-函数将处理其他所有事情。

如果您想回到JDBC,这里是和


Hibernate试图将
void
解码成它可以理解的东西,但失败了。给它一个伪返回值?或者看看是否可以让Hibernate放弃结果-它是否有执行函数并忽略结果的查询操作,如
executeUpdate
或类似操作?另请参见:我更改了函数以返回一个伪整数。现在它工作了!谢谢
Query query = session.createSQLQuery("SELECT queryinteriorexteriorcount()");
query.uniqueResult();
session.doWork(new Work() {
    @Override
    public void execute(Connection connection) throws SQLException {
        connection.prepareCall("{call queryinteriorexteriorcount()}").executeQuery();
    }
});