我使用PostgreSQL和Spring 3.1 NamedParameterJdbcTemplate。按名称命名参数与Spring的NamedParamterJdbcTemplate
如果我有一些SQL在选择& Group By子句中使用命名参数,Postgres会将其作为错误的语法返回。用手动替换参数运行查询将正常工作。
假设有一个被称为 '表' 2列 “ID” 和 “数量”
该SQL表:
SELECT some_function(id, :param), avg(number) FROM table GROUP BY some_function(id, :param)
变为(如记录由DB):
SELECT some_function(id, $1), avg(number) FROM table GROUP BY some_function(id, $2)
我怀疑查询计划器看着这个查询,它不知道$ 1 == $ 2,所以它提供了es错误“列'id'必须出现在GROUP BY子句中或用于聚合函数中。”
是否有办法解决这个使用Spring?有没有办法让它查询变成:
SELECT some_function(id, $1), avg(number) FROM table GROUP BY some_function(id, $1)
取而代之?查询计划者会对我怀疑的事情好。
第一个解决方案没有奏效。第二个适用于简单的SQL查询。我最终做了手动替换。 – dontocsata 2013-05-09 15:48:15