JPQL查询不适用于不区分大小写的参数[重复]

问题描述 投票:0回答:1

我正在尝试编写JPQL查询以基于String搜索数据。当我尝试使用“ C”搜索数据时,它工作正常,但不适用于“ c”,下面是查询。例如:以下查询适用于Cat,College,折叠,但不适用于Cat,College,折叠。任何帮助表示赞赏。

@Query("select ca.company_01 from CompanyAddress_02 ca WHERE ca.statusActiveSwitch = 'Y' AND ca.country.region.regionCode = :regionCode")
    Page<Company_01> findAllCompany_01Region(@Param("regionCode") String regionCode,  Pageable pageRequest);
java database postgresql jpql case-insensitive
1个回答
0
投票

一种方法是在JPQL查询中进行比较时,仅将区域代码的两边都小写:

@Query("SELECT ca.company_01 FROM CompanyAddress_02 ca WHERE ca.statusActiveSwitch = 'Y' AND LOWER(ca.country.region.regionCode) = LOWER(:regionCode)")
Page<Company_01> findAllCompany_01Region(@Param("regionCode") String regionCode,  Pageable pageRequest);

请注意,如果您的地区代码中的案例实际上没有任何用处,请考虑将其全部存储在一个案例中,例如小写,然后确保传递给后端的内容也始终相同。这避免了调用LOWER(),后者导致WHERE子句不可修改(即,它不能使用索引)。

© www.soinside.com 2019 - 2024. All rights reserved.