gpt4 book ai didi

java - Spring Data JPA 未在方法名称中指定 lower 关键字

转载 作者:行者123 更新时间:2023-12-01 10:15:16 25 4
gpt4 key购买 nike

在查询表时,我需要将所有电子邮件小写,但文档仅指定 UPPER() 的 method-name-keyowrd:

忽略大小写 findByFirstnameIgnoreCase ... 其中 UPPER(x.firstame) = UPPER(?1)

如何使用LOWER()?我已经对其进行了调试,可以看到 PredicateBuilder 似乎没有考虑它。

您知道这是否是一个限制吗?或者可以通过不同的方式实现这一点?

最佳答案

根据 Spring JPA reference guidefindXXXByIgnoreCase(...) 默认情况下使用 UPPER(...) 执行不区分大小写的搜索。

要强制它使用LOWER关键字,我们可以使用带有@Query注释的自定义查询并指定SELECT .... LOWER(email)= LOWER (?1)

就我而言,我使用了如下自定义查询来强制它对 email 列使用 LOWER 关键字:

@Query("SELECT p from Person p where LOWER(email) = LOWER(?1)")
List<Person> findByEmailIgnoreCase(@Param("email") String email);

这导致创建以下查询:

Hibernate: select person0_.id as id1_0_, person0_.email as email2_0_, person0_.first_name as first_na3_0_, person0_.last_name as last_nam4_0_ from person person0_ where lower(person0_.email)=lower(?)

这应该有助于查询使用函数索引,即LOWER(email)

关于java - Spring Data JPA 未在方法名称中指定 lower 关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35940742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com