我正在尝试实现一个存储库查询方法,以根据地址的房屋名称搜索地址。我希望这个搜索查询不区分大小写。
我在地址存储库中定义了以下搜索方法。但是这个搜索是区分大小写的。
@Query(value = "select ad from #{#entityName} ad where ad.houseName LIKE :houseName%")
public Page<LocalAddress> findByHouseName(@Param("houseName") String houseName, Pageable page);如何使此查询不区分大小写?
发布于 2017-05-21 20:09:59
要实现您的任务,您不需要手动编写查询,只需使用Spring Data magic
Page<LocalAddress> findByHouseNameIgnoreCaseContaining(String partOfHouseName, Pageable page);此方法将使用不区分大小写的like操作符,并独立地从DB获取数据。
但是,您可以在JPQL查询中显式指定这一点:
@Query("select a from LocalAddress a where upper(a.houseName) like concat('%', upper(?1), '%')")
Page<LocalAddress> getByName(String partOfHouseName, Pageable page)更多信息请点击此处:JPQL Reference
发布于 2017-05-21 15:14:17
好吧,这是一个数据库引擎的问题。SpEL仅计算表达式并将占位符替换为值。请参阅问题How can I search (case-insensitive) in a column using LIKE wildcard?
https://stackoverflow.com/questions/44093814
复制相似问题