首页 > 解决方案 > 我们如何使用“And”和“Or”查询关键字在 jpa 存储库中创建自定义查询?

问题描述

假设我有一个users带有属性id, first_name, last_name, username, email,phone的表statusACTIVEDELETED由枚举定义)。

作为一个参数,我key想在表中搜索。

这是我的服务

public void userService(String key){
    UserRepository userRepository ;
    List<Users> userList = userRepository.findByStatusNotAndFirstName
        ContainingOrLastNameContainingOrEmailContainingOrPhoneContaining
        (Status.DELETED, key, key, key, key);
}

这是我的存储库

public interface UserRepository extends JpaRepository<User, Long> {
    List<Users> findByStatusNotAndFirstNameContainingOrLastNameContainingOr
    EmailContainingOrPhoneContaining(Status deleted, String key, String key, 
    String key, String key);
}

这是在查询中使用 And 和 Or 的正确方法吗?

标签: javaspring-bootspring-data-jpabackendjpql

解决方案


首先,您应该为存储库类创建与内存数据库的集成测试。因此,您可以尝试查询是否返回正确的结果。

即使你可以在方法名称中定义多个“或”和“与”运算符,阅读和理解也会变得一团糟。我建议创建一个名称可读的方法并使用 org.springframework.data.jpa.repository.Query 注释来定义 JPA 查询。


推荐阅读