首页 > 解决方案 > 自定义查询不使用参数

问题描述

花了几个小时试图弄清楚为什么我的自定义请求不起作用。

我想我明白了:该参数不适用于请求-> 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 收到的值?

谢谢你

标签: hibernatespring-data-jpapojo

解决方案


对我来说,似乎不需要您的换行符 ( \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.


推荐阅读