自定义查询不使用参数
The custom query does not use the parameter
我花了几个小时才弄清楚为什么我的自定义请求不起作用。
我想我明白了:参数不适用于请求 -> Jpa 使用 's_polygoneDepartement' 发出请求而不是用值替换它,但我不明白为什么。
@Query(value = " select * from poi where ST_Intersects(geog , \n" +
" ST_GeomFromGeoJSON('\n" +
" :s_polygoneDepartement \n" +
" ')\n" +
" ) = 'true' "
,
countQuery = " select count(*) from poi where ST_Intersects(geog , \n" +
" ST_GeomFromGeoJSON('\n" +
" :s_polygoneDepartement \n" +
" ')\n" +
" ) = 'true' ",
nativeQuery = true)
Page<Poi> findAllByNomDepartementFr(@Param("s_polygoneDepartement") String s_polygoneDepartement, Pageable pageable);
我认为这是因为:s_polygoneDepartement 不接近“=”,但在这种情况下如何让它理解它应该用收到的值替换:s_polygoneDepartement?
谢谢
对我来说,似乎不需要你的换行符 (\n
)。因为您将参数包装到 '\n {} \n'
Spring 中,所以它可能会像 String 一样对待它,而不是可以用给定参数替换的东西。
试试:
@Query(value = "select * from poi where ST_Intersects(geog, ST_GeomFromGeoJSON(:s_polygoneDepartement)) = 'true' ",
countQuery = "select count(*) from poi where ST_Intersects(geog, ST_GeomFromGeoJSON(:s_polygoneDepartement)) = 'true' ",
nativeQuery = true)
Page<Poi> findAllByNomDepartementFr(@Param("s_polygoneDepartement") String s_polygoneDepartement, Pageable pageable);
或者,您可以尝试使用索引查询参数而不是命名参数。然后你可以丢弃 @Parameter()
并在查询中使用 ?1
而不是 :s_polygoneDepartement
.
我花了几个小时才弄清楚为什么我的自定义请求不起作用。
我想我明白了:参数不适用于请求 -> Jpa 使用 's_polygoneDepartement' 发出请求而不是用值替换它,但我不明白为什么。
@Query(value = " select * from poi where ST_Intersects(geog , \n" +
" ST_GeomFromGeoJSON('\n" +
" :s_polygoneDepartement \n" +
" ')\n" +
" ) = 'true' "
,
countQuery = " select count(*) from poi where ST_Intersects(geog , \n" +
" ST_GeomFromGeoJSON('\n" +
" :s_polygoneDepartement \n" +
" ')\n" +
" ) = 'true' ",
nativeQuery = true)
Page<Poi> findAllByNomDepartementFr(@Param("s_polygoneDepartement") String s_polygoneDepartement, Pageable pageable);
我认为这是因为:s_polygoneDepartement 不接近“=”,但在这种情况下如何让它理解它应该用收到的值替换:s_polygoneDepartement?
谢谢
对我来说,似乎不需要你的换行符 (\n
)。因为您将参数包装到 '\n {} \n'
Spring 中,所以它可能会像 String 一样对待它,而不是可以用给定参数替换的东西。
试试:
@Query(value = "select * from poi where ST_Intersects(geog, ST_GeomFromGeoJSON(:s_polygoneDepartement)) = 'true' ",
countQuery = "select count(*) from poi where ST_Intersects(geog, ST_GeomFromGeoJSON(:s_polygoneDepartement)) = 'true' ",
nativeQuery = true)
Page<Poi> findAllByNomDepartementFr(@Param("s_polygoneDepartement") String s_polygoneDepartement, Pageable pageable);
或者,您可以尝试使用索引查询参数而不是命名参数。然后你可以丢弃 @Parameter()
并在查询中使用 ?1
而不是 :s_polygoneDepartement
.