JavaSpringDataJPA没有在方法名称中指定lower关键字
查询我的表时,我需要将所有电子邮件小写,但文档仅为UPPER()
指定了方法名keyowrd:
IgnoreCase findByFirstnameIgnoreCase…其中UPPER(x.firstName)=UPPER(?1)
如何使用LOWER()
?
我已经调试过了,可以看出PredicateBuilder
似乎没有考虑它
你知道这是否是一种限制吗?或者这可以通过不同的方式实现
你可以在下面搜索框中键入要查询的问题!
查询我的表时,我需要将所有电子邮件小写,但文档仅为UPPER()
指定了方法名keyowrd:
IgnoreCase findByFirstnameIgnoreCase…其中UPPER(x.firstName)=UPPER(?1)
如何使用LOWER()
?
我已经调试过了,可以看出PredicateBuilder
似乎没有考虑它
你知道这是否是一种限制吗?或者这可以通过不同的方式实现
# 1 楼答案
Spring Data JPA docs对房产的区分大小写进行了说明:
在方法名中使用
IgnoreCase
将自动生成一个查询,该查询对一个或所有指定属性不区分大小写否则,您始终可以通过如下注释为方法指定自定义查询:
通过使用
@Query
注释,您可以使用普通的旧JPQL来查询数据库# 2 楼答案
根据Spring JPA reference guide,
findXXXByIgnoreCase(...)
默认情况下使用UPPER(...)
执行不区分大小写的搜索为了强制它使用
LOWER
关键字,我们可以使用带有@Query
注释并指定SELECT .... LOWER(email)= LOWER(?1)
的自定义查询在我的例子中,我使用了如下自定义查询来强制它对
email
列使用LOWER
关键字:这导致创建了以下查询:
这将有助于查询使用函数索引,即
LOWER(email)