gpt4 book ai didi

java - 如何编写 JpaRepository 方法来搜索在 Set 中存储电话号码的用户

转载 作者:行者123 更新时间:2023-12-02 09:54:54 27 4
gpt4 key购买 nike

我正在开发一个 Spring 项目,现在我必须编写 JPA 方法来搜索在 Set 中具有类似电话号码的用户

该方法应该位于我的接口(interface) UserRepository 中,该接口(interface)实现 JpaRepository

我尝试编写如下方法:
List<User> findByNameLikeOrPhoneNumbersLike(String name, Set<String> phoneNumbers);
List<User> findByNameLikeOrPhoneNumbersLike(String name, String phoneNumber);
List<User> findByNameLikeOrPhoneNumbersContaining(String name, String phoneNumber);

但是它们都不起作用。

我的用户实体类是:

@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long id;

@Convert(converter = PhoneNumbersConverter.class)
public Set<String> phoneNumbers = new TreeSet<>();

........
}

目前我的 PhoneNumbersConverter 将列表转换为带有“,”的连接字符串

我想编写可以在给定字符串上搜索用户的方法,该字符串可能类似于名称,也可能类似于用户编号之一。

最佳答案

如果您可以使用nativeQuery @Query,您可以这样做(假设列名称为namephone_numbers 并且 phone_numbers 看起来像这样 111222333,222333444,333444555)。

@Query(value = 
"SELECT _user FROM user _user " +
"WHERE " +
"_user.name LIKE CONCAT('%', $1, '%') OR " +
"_user.phone_numbers LIKE CONCAT('%', $1, '%')",
nativeQuery = true
)
List<User> findWhereNameOrPhoneNumberLike(String query);

您可能还希望对 query_user.name 使用 UPPER 函数,使其不区分大小写 (UPPER( _user.name) LIKE UPPER(CONCAT('%', $1, '%')))。

关于java - 如何编写 JpaRepository 方法来搜索在 Set<String> 中存储电话号码的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56066274/

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