Java Spring引导上的本机查询:混合?不支持参数和其他形式,如?1
我正在使用Postgresql/PostGIS在spring boot jpa上运行本机查询 查询在postgresql上运行良好:Java Spring引导上的本机查询:混合?不支持参数和其他形式,如?1,java,postgresql,spring-boot,spring-data-jpa,Java,Postgresql,Spring Boot,Spring Data Jpa,我正在使用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_Ge
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
你一定要逃走吗?在case语句中,因为这是参数占位符,而不是\您必须使用?:
WHEN fc ??
你一定要逃走吗?在case语句中,因为这是参数占位符,而不是\您必须使用?:
WHEN fc ??
似乎不可能逃脱这个问号。
因此,唯一的解决方案是创建一个自定义运算符来替换所指出的问号,并在本机查询中使用它,而不是“?”似乎无法避开问号。
因此,唯一的解决方案是创建一个自定义运算符来替换所指出的问号,并在本机查询中使用它,而不是“?”.因此,实际的问题是如何使查询中的问号不被hibernate视为参数占位符。
?
是准备语句参数的占位符。占位符?1用于输入,而不是fc?中的占位符features'表示fc包含功能?因此实际的问题是如何使它使hibernate不会将查询中的问号视为参数占位符。?
是准备好的语句参数的占位符。占位符?1用于输入,而不是fc中的占位符?'功能的意思是fc包含功能?嗯,但什么是功能?代表什么?不应该是a=fc吗?”功能的意思是:fc包含功能我错了,对不起。你一定要用吗?不是\因为转义序列可能我无法转义(如果问题是这样的话)你试过两个吗??因为这是官方的JDBC escapeHmm,但它是什么?代表什么?不应该是a=fc吗?”功能的意思是:fc包含功能我错了,对不起。你一定要用吗?不是\因为转义序列可能我无法转义(如果问题是这样的话)你试过两个吗??因为这是官方的JDBC escape@Param(“jsonOperator”)jsonOperator:String=“?”
@JackMahoney您能进一步说明这个注释必须去哪里吗?@Param(“jsonOperator”)jsonOperator:String=“?”
@JackMahoney您能进一步说明这个注释必须去哪里吗?