Spring EL - 不区分大小写的LIKE语法?

时间:2017-05-21 06:23:47

标签: spring spring-data-jpa spring-data-rest spring-el

我正在尝试实现一个存储库查询方法来按地址名称搜索地址。我希望此搜索查询不区分大小写。

我在地址信息库中定义了以下搜索方法。但是这种搜索是区分大小写的。

 @Query(value = "select ad from #{#entityName} ad where ad.houseName LIKE :houseName%")
    public Page<LocalAddress> findByHouseName(@Param("houseName") String houseName, Pageable page);

如何使此查询不区分大小写?

2 个答案:

答案 0 :(得分:2)

要实现您的任务,您不需要手动编写查询,只需使用Spring Data magic

Page<LocalAddress> findByHouseNameIgnoreCaseContaining(String partOfHouseName, Pageable page);

此方法将使用不区分大小写的like运算符,并从数据库中独立获取数据。

尽管如此,您可以在JPQL查询中明确指定:

@Query("select a from LocalAddress a where upper(a.houseName) like concat('%', upper(?1), '%')")
Page<LocalAddress> getByName(String partOfHouseName, Pageable page)

此处有更多信息:JPQL Reference

答案 1 :(得分:0)

嗯,这是数据库引擎的问题。 SpEL仅计算表达式并使用值替换占位符。请参阅问题How can I search (case-insensitive) in a column using LIKE wildcard?