【问题标题】:Is there a way of using JPA repository method keywords for searching for a list of terms in a column?有没有一种方法可以使用 JPA 存储库方法关键字来搜索列中的术语列表?
【发布时间】:2020-03-24 09:28:09
【问题描述】:

我有一个 item 表,其中包含一个带有 name 字段的项目。

我正在尝试通过给定搜索词列表搜索这些项目,其中每个返回的项目 name 包含所有术语,例如:

给定搜索词

  • 轮子

  • 手推车

然后是项目

  • 手推车

  • 大手推车

将被退回,而

  • 轮子

  • 手推车

不会。

我想使用现有的ItemRepository 来执行此操作,并且想知道 JPA 是否可以通过方法名称关键字来执行此操作?

我知道如果我只有一个搜索词,我可以使用 Contains 关键字执行此操作,但该关键字不支持集合参数。

【问题讨论】:

  • 您需要编写一些代码来创建动态查询并执行它。

标签: java spring spring-boot jpa repository


【解决方案1】:

你可以做一些逻辑来构建一个所有值连接的字符串,例如:

String allValues = items.stream()
            .collect(Collectors.joining(delimiter, prefix, suffix));

然后您可以使用 contains 方法调用您的 ItemRepository

【讨论】:

  • 不要认为这就是 Contains 关键字在 JPA 中的工作方式。这将搜索整个连接的字符串,这将不符合问题中的条件。
  • 如果我的回答没有帮助,也许你应该尝试原生查询。一般来说,Jpa 查询适用于基本查询,这不是你的情况。
猜你喜欢
  • 1970-01-01
  • 2023-02-13
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 2021-08-26
  • 1970-01-01
  • 2019-09-05
  • 1970-01-01
相关资源
最近更新 更多