繁体   English   中英

Spring Boot上的本机查询:混合使用? 参数和其他形式(如?1)不受支持

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM