java - 我们如何使用“And”和“Or”查询关键字在 jpa 存储库中创建自定义查询?
问题描述
假设我有一个users
带有属性id
, first_name
, last_name
, username
, email
,phone
的表status
(ACTIVE
或DELETED
由枚举定义)。
作为一个参数,我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 的正确方法吗?
解决方案
首先,您应该为存储库类创建与内存数据库的集成测试。因此,您可以尝试查询是否返回正确的结果。
即使你可以在方法名称中定义多个“或”和“与”运算符,阅读和理解也会变得一团糟。我建议创建一个名称可读的方法并使用 org.springframework.data.jpa.repository.Query 注释来定义 JPA 查询。
推荐阅读
- ios - NSStackView 子视图不调整子堆栈视图的大小
- tensorflow - 在 Tensorflow 中,name、^name 和 name:digits 之间有什么区别?
- sql-server - SSIS平面文件源sql目标错误
- azure - 在 Azure 中将 SingleTenant 转换为 Multitenant 应用程序
- android - 约束线在设计视图中不起作用
- python - Scipy kstest 为相似的值集返回不同的 p 值
- android - 无法将 java.lang.long 类型的对象转换为类型(模型类)
- arduino - 使用rosserial与MX-64 DYNAMIXEL电机通讯
- ruby-on-rails - 如何使用 cap 在服务器上运行 `npm install` 和 `npm run bundle`(应该与 `webpack` 相同)?
- c - 这个程序的输出是什么?