首页 > 解决方案 > 如何通过乘以字符串值来查找所有内容?

问题描述

我有一个实体员工,其status字段 as@Enumerated被保存为 String in PostgreSQL

.

status 可以包含 3 个值:ACTIVE, INACTIVE, TRIAL.

我想要一个没有命名查询或@QueryAnnotation 的 JPA 方法,它将获取我所有的 Employees where status = 'ACTIVE' or 'TRIAL'.

`findAllByStatusIn(List statusList)' 只给出最后添加到列表的状态。

即,如果我添加

statusList.add(Status.ACTIVE)
statusList.add(Status.TRIAL)

. 然后我只得到TRIAL员工。但是如果我添加

statusList.add(Status.TRIAL);
statusList.add(Status.ACTIVE);

如何使用 JPA 方法获取两种状态的值?

任何帮助表示赞赏。

JPA 和 Spring 数据的新手。

如果这个问题可能重复,请引导我找到正确的答案。

提前致谢。

标签: javahibernatejpaspring-data-jpaenumeration

解决方案


在尝试了上述宝贵意见的几个版本后,我找到了基于状态列表的正确获取方法。

Page<Employee> findAllByStatusIn(List<Status> statusList, Pageable pageable);

按预期工作。也提供可分页信息。我还尝试All从方法中删除关键字。

这也一样:

Page<Employee> findByStatusIn(List<Status> statusList, Pageable pageable);

由于一次获取多条记录,因此我保留了All关键字以便更好地理解。

但我相信这不是真的必要。


推荐阅读