Hibernate SQLQuery使用不同参数调用自定义函数两次,仅第一次执行

Hibernate SQLQuery使用不同参数调用自定义函数两次,仅第一次执行,hibernate,postgresql,Hibernate,Postgresql,我有一个自定义函数,在查询中使用不同的参数多次执行,如下所示: select my_function(input.pt, false), my_function(input.pt, true) from (select st_geomfromewkt('SRID=1;POINT(151.2836 -33.7859484007395)') as pt) as input; 当在java/hibernate之外运行时,它会正常执行,返回两个不同的值: 1, 2 但是,当我通过hi

我有一个自定义函数,在查询中使用不同的参数多次执行,如下所示:

select
    my_function(input.pt, false),
    my_function(input.pt, true)
from (select st_geomfromewkt('SRID=1;POINT(151.2836 -33.7859484007395)') as pt) as input;
当在java/hibernate之外运行时,它会正常执行,返回两个不同的值:

1, 2
但是,当我通过hibernate SQLQuery使用完全相同的参数调用完全相同的查询时,我两次得到第一个结果:

SQLQuery qry = session.createSQLQuery("SELECT "//
    + " my_function(input.pt, false)," //
    + " my_function(input.pt, true)" //
    + " FROM (SELECT st_geomfromewkt(:point) AS pt) AS input;");
qry.setString("point", "SRID=1;POINT(151.2836 -33.7859484007395)");
Object[] result = (Object[]) qry.uniqueResult();
结果:

[1, 1]
我已经仔细检查了我是否针对相同的数据库和模式运行

有什么想法吗?

作为超级用户(
postgres
默认情况下)运行以下命令:

set log_statement='all';
然后运行HibernateSqlQuery。您将在Postgres日志文件中看到向数据库发出的命令。也许这对你有帮助

别忘了
设置log_语句='none'测试后返回,因为记录所有语句会很慢


除此之外,您的函数可能有问题-如果没有它的定义,我们将无能为力。

tometzky我将很快尝试您的建议(日志记录),不过只是附带说明,我已经测试过,如果我切换函数调用(即true,然后false),我总是在通过hibernate(2,2)时获得两次第一次调用的结果。