0

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

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

但是,当我通过休眠 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]

我已经仔细检查过我正在针对相同的数据库和架构运行。

有任何想法吗?

4

1 回答 1

1

作为超级用户(postgres默认)运行这个:

set log_statement='all';

然后运行你的休眠 SQLQuery。您将在 Postgres 日志文件中看到向数据库发出的命令是什么。也许这会对你有所帮助。

不要忘记set log_statement='none';在测试后返回,因为记录所有语句会很慢。

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

于 2012-07-06T07:28:14.353 回答