我们如何使用'And'和'Or'查询关键字在jpa存储库中创建自定义查询?

时间:2018-08-07 15:04:41

标签: java spring-boot spring-data-jpa backend jpql

假设我有一个表格users,其属性为idfirst_namelast_nameusernameemailphonestatus(由枚举定义的ACTIVEDELETED)。

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的正确方法吗?

1 个答案:

答案 0 :(得分:0)

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

即使您可以在方法名称中定义多个“ or”和“ and”运算符,阅读和理解也很混乱。我建议创建一个名称可读的方法,并使用org.springframework.data.jpa.repository.Query批注定义JPA查询。