PostgreSQL语法错误排查:Spring Boot Repository@Query语句报错
问题定位与解决方案
针对你遇到的PostgreSQL语法错误ERROR: syntax error at or near ")",可以从以下几个方向排查和修复:
1. 修正JSONB字段转换的语法写法
你的查询中使用了多层CAST处理JSONB字段,可能存在解析歧义。将CAST(jsonb_extract_path(CAST(at2.new_data AS jsonb), 'kindikator') AS INT)替换为PostgreSQL原生的JSONB操作语法,更简洁且不易出错:
(at2.new_data->>'kindikator')::INTEGER
修改后的LEFT JOIN条件:
LEFT JOIN audit_trail at2 ON (at2.new_data->>'kindikator')::INTEGER = i.kindikator AND at2.kmenu = 65
2. 完善子查询ci的关联条件
当前子查询ci的GROUP BY包含u.kuk和i.kdjab,但关联时只匹配了kdjab,这会导致不同unit下相同jabatan的数据错误关联,同时也可能引发语法解析的隐性问题。需要补充kuk的匹配条件:
LEFT JOIN ( -- 子查询原有内容不变 ) AS ci ON ci.kdjab = i.kdjab AND ci.kuk = u.kuk
3. 直接在数据库中测试SQL
将查询中的参数替换为具体值(比如:unitKerja替换为'',:isActive替换为NULL),直接在PostgreSQL控制台或pgAdmin中运行,数据库会给出精确的错误行号,快速定位语法问题。
内容的提问来源于stack exchange,提问作者tito setiawan
相关产品推荐
相关产品推荐

