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)时获得两次第一次调用的结果。