【问题标题】:How to findAll by multplie string values?如何通过多个字符串值findAll?
【发布时间】:2019-11-05 12:50:05
【问题描述】:

我有一个实体员工,其 status 字段为 @Enumerated,该字段在 PostgreSQL 中保存为字符串。

.

状态可以包含 3 个值:ACTIVE, INACTIVE, TRIAL

我想要一个没有命名查询的 JPA 方法,或者 @Query Annotation,它将获取所有员工 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 数据的新手。

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

提前致谢。

【问题讨论】:

  • 从您的方法中删除 all。应该只是findByStatusIn(List<String> status);
  • 你能显示更多代码吗?你怎么称呼它?如果您添加试用版或活动版,会发生什么情况?看来你没有完成。
  • 你试过findByStatusIn(List statusList) 吗?
  • List<Entity> findByStatusIn(List<Status> status) 必须工作。如果没有,那么你真的搞砸了配置中的某个地方。 (也将类型参数添加到List

标签: java hibernate jpa spring-data-jpa enumeration


【解决方案1】:

在尝试了上述有价值的 cmets 的几个版本之后,我找到了基于状态列表的正确获取方法。

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

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

这也是一样的:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2017-12-03
    相关资源
    最近更新 更多