[英]Native query on Spring Boot: Mixing of ? parameters and other forms like ?1 is not supported
我正在使用Postgresql / PostGIS在spring boot jpa上运行本机查询。
查询在postgresql上运行良好:
WITH data AS (SELECT '{ "type": "Point", "coordinates": [102.0, 0.5]
}'::jsonb AS fc)
UPDATE dopigp.disciplinare_aree SET area_da_validare=(
SELECT
ST_Union(ST_AsText(ST_GeomFromGeoJSON(feat->>'geometry'))) AS geom
FROM (
SELECT
CASE
WHEN fc ? 'features' THEN jsonb_array_elements(fc->'features')
WHEN fc ? 'geometry' THEN (fc)
ELSE jsonb_build_object('geometry', fc)
END
AS feat
FROM data
) AS f
) WHERE id_disciplinare=251
在Spring Boot上给我错误: 混合? 参数和其他形式(如?1)不受支持
@Transactional
@Modifying
@Query(value = "WITH data AS (SELECT (?2)\\:\\:jsonb AS fc)\n" +
"UPDATE dopigp.disciplinare_aree SET area_da_validare=(\n" +
"SELECT\n" +
" ST_Union(ST_AsText(ST_GeomFromGeoJSON(feat->>'geometry'))) AS geom\n" +
"FROM (\n" +
" SELECT \n" +
" CASE \n" +
" WHEN fc ? 'features' THEN jsonb_array_elements(fc->'features')\n" +
" WHEN fc ? 'geometry' THEN (fc)\n" +
" ELSE jsonb_build_object('geometry', fc)\n" +
" END \n" +
" AS feat\n" +
" FROM data\n" +
") AS f\n" +
") WHERE id_disciplinare=(?1) \n",
nativeQuery = true)
void upload(Integer idDisciplinare, String geoJSON);
您必须逃脱吗? 在case语句中,因为这是参数占位符,但不是\\,您必须使用? :
WHEN fc ??
似乎无法逃脱问号。 因此,唯一的解决方案是创建一个自定义运算符,以替换此处指出的问号,并在本机查询中使用它而不是“ ? ”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.