【问题标题】:How can we use 'And' and 'Or' query keyword to create custom queries in jpa repositories? [duplicate]我们如何使用“And”和“Or”查询关键字在 jpa 存储库中创建自定义查询? [复制]
【发布时间】:2019-01-14 17:36:12
【问题描述】:

假设我有一个表users,其属性为idfirst_namelast_nameusernameemailphonestatus(ACTIVE 或@987654 定义枚举)。

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

【问题讨论】:

  • findByStatusNotAndFirstNameContainingOrLastNameContainingOr 应该找到什么?我的意思是,条件是什么?
  • 它应该找到状态未被删除的用户(即那些活跃的用户),并且搜索的关键应该包含在first_name或last_name或电子邮件或电话中。
  • 这个语法不正确:List&lt;Users&gt; userList = userRepository.findByStatusNotAndFirstNameContainingOrLastNameContainingOrEmailContainingOrPhoneContaining(Status.DELETED, String key, String key, String key, String key); 当你调用一个方法时你没有定义参数的类型;这在方法签名中。
  • 如果可能,请考虑提供Minimal, Complete, and Verifiable example。这样,SO 上的志愿者更有可能为您提供帮助。您提供的代码甚至不应该编译。
  • 希望我编辑的代码能正常工作。

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


【解决方案1】:

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

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

【讨论】:

  • 我没有得到预期的结果。是的,我正在尝试@Query。
猜你喜欢
  • 1970-01-01
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
相关资源
最近更新 更多