【发布时间】:2019-01-14 17:36:12
【问题描述】:
假设我有一个表users,其属性为id、first_name、last_name、username、email、phone、status(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<Users> 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