JPQL 查询不适用于不区分大小写的参数

JPQL query not working for case insensitive parameters

我正在尝试编写 JPQL 查询以基于字符串搜索数据。当我尝试使用 'C' 搜索数据时,它工作正常,但它不适用于 'c',下面是查询。例如:下面的查询适用于 Cat、College、Collapse,但不适用于 cat、college、collapse。感谢您的帮助。

@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);

一种方法是在您的 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 子句不可搜索(即它不能使用索引)。