$ 1或附近的语法错误以及一些异常sql语法异常

时间:2015-01-13 12:56:36

标签: sql hibernate postgresql

我在$ 1或附近收到错误语法错误,还有一些异常sql语法异常

"select t1.* from ( select * from employee_additional_attributes  where stwid in :stwIdList )"
            + "as t1 join ( select stwid, max(employee_additional_attribute_id) as employee_additional_attribute_id from employee_additional_attributes"
            + "where stwid in :stwIdList and mis_attribute_id in (:attributeId) and start_time <= date(:date) group by stwid )"
            + "as t2 using ( stwid, employee_additional_attribute_id" )

1 个答案:

答案 0 :(得分:0)

PostgreSQL在参数化查询中使用$<n>语法作为占位符(例如底层连接中的预处理语句)。

您的第一个($1)参数中存在语法错误:
(当然还有@Jens提到的一些空格语法错误)

where stwid in :stwIdList

IN的正确语法是<expression> IN (<expression>, ...)。您不能使用单个参数(使用JDBC)绑定多个值。如果可以绑定数组,则可以使用<expression> = ANY (<array-expression>)语法。

对于hibernate,请参阅此related question(请注意查询参数周围的括号)。