spring-data-jpa 如何在JpaRepository中对字符串列表应用类似查询

uqdfh47h  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(131)

我正在使用JpaRepository,并尝试使用List<String>查询数据库,因此我使用了类似的查询,但没有得到任何结果。
下面是我的疑问:

@Query("SELECT a FROM MappingEntity a WHERE UPPER(a.cuisines) LIKE (% :cuisine_type %) AND ST_distance(ST_POINT(:lng , :lat), a.geoLocation) < :radius")
List<OpentableMappingEntity> getRestaurantsListCuisines1(@Param("cuisine_type") List<String> cuisines, @Param("lat") double latitude, @Param("lng") double longitude, @Param("radius") Integer radius);

@Query("SELECT a FROM MappingEntity a WHERE UPPER(a.cuisines) LIKE CONCAT('%', CONCAT(:cuisine_type, '%')) AND ST_distance(ST_POINT(:lng , :lat), a.geoLocation) < :radius")
List<OpentableMappingEntity> getRestaurantsListCuisines2(@Param("cuisine_type") List<String> cuisines, @Param("lat") double latitude, @Param("lng") double longitude, @Param("radius") Integer radius);

我尝试了两个查询,我得到了一个空的响应,如果我删除类似的部分,它会给予我的结果。
如何对列表进行类似查询?

sd2nnvve

sd2nnvve1#

不能对列表使用LIKE,而应使用IN
示例:带有列表的本机查询:

SELECT * FROM order AS o WHERE o.fol IN ('OCV3', 'OCV5', 'OPL8');

并在存储库中查询:

@Query(value="SELECT * FROM order AS o WHERE o.fol IN :list", nativeQuery = true)
    List<Order> stack(@Param("list") List<String> list);

两个查询显示相同的结果

相关问题