【问题标题】:The custom query does not use the parameter自定义查询不使用参数
【发布时间】:2021-09-11 14:42:22
【问题描述】:

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

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

谢谢

【问题讨论】:

    标签: hibernate spring-data-jpa pojo


    【解决方案1】:

    对我来说,似乎不需要你的换行符 (\n)。因为您将参数包装到 '\n {} \n' 中,所以 Spring 可能会将其视为字符串,而不是可以用给定参数替换的东西。

    尝试:

    @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

    【讨论】:

    • 我离理解我的错误还有光年;我从来没有认为换行符会产生影响!非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2020-02-21
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多