当前位置: 首页 > 知识库问答 >
问题:

使用包含Spring数据JPA中项目列表的查询搜索多个列

公冶光亮
2023-03-14

我正在开发一个库API,我的目标是搜索一本书。目前这本书有两个我想搜索的有趣值:标题和简介(书背面的文本)。

底层数据库是MariaDB。

我构建了一个JPA查询:

Iterable<Book> findByTitleContainsOrBlurbContains(String query, String query2)

query和query2的内容相同。对于单词搜索,这种方法效果很好,但当两个或多个单词混合在简介和标题中时,这种方法就停止了。这是可以理解的。

我的第二次尝试是将每个术语拆分为字符串值列表。

Iterable<Book> findByTitleContainsIsInOrBlurbContainsIsIn(List<String> query, List<String> query2);

这也不起作用。应用程序无法编译。

是否有方法在包含上下文中搜索包含项目列表的两列?

共有1个答案

戴原
2023-03-14

regex查询可以是实现这一点的一种方法,如下所述:MySQL LIKE IN()?

虽然REGEX是列出的关键字之一,但spring-data-jpa似乎不支持它(版本2.5:regex-type存在但未评估,所以像queryByAttie teRegex(String regex)这样的东西不起作用)。

备选本机查询:

@Query(nativeQuery = true, value = "SELECT * FROM my_entity WHERE "
      + "attribute1 REGEXP CONCAT_WS('|', :list1) " + "OR "
      + "attribute2 REGEXP CONCAT_WS('|', :list2) ")
    List<MyEntity> findByAttributeList1Or2( // (method name does not matter)
                     @Param("list1") Collection<String> list1,
                     @Param("list2") Collection<String> list2);

将提供的列表(例如,('val1','val2')连接到'val1 | val2'),这将匹配例如“completeval2xxx”。

有关一些测试的完整示例,请参见此处

 类似资料:
  • 描述: 我有两张桌子,和。我想在显示员工详细信息时直接显示,但我不想配置这两个实体之间的关系(或)。 因为这将加载列的所有值,但这些值对我来说毫无用处,所以我只需要 。下面是我的代码,但它不起作用。 商店员工类型: 商店_员工: 存储库: 这可以显示<code>类型名称@Transient,它可以成功保存,但当我查询实体时,“typeName”的值为空。

  • 我试图搜索一个列表包含另一个列表与MongoDB。 我将使用字符串列表进行搜索。假设列表L=[1,2,3,4,5] 例如,对于给定的列表L=[1,2,3,4,5],我希望返回带有_id1和2的文档。3不能返回,因为6不在L中。 我找到了两个解决方案 一 二 由于我想使用Spring Data MongoDb Criterias,我尝试编写上述解决方案,但代码似乎不起作用,它返回所有文档

  • 本文向大家介绍如何使用MySQL LIKE查询搜索包含%的列值?,包括了如何使用MySQL LIKE查询搜索包含%的列值?的使用技巧和注意事项,需要的朋友参考一下 要使用%搜索列值,语法如下- 让我们首先创建一个表- 使用insert在表中插入一些记录- 使用选择显示表中的所有记录- 这将产生以下输出- 这是使用类似查询的查询来搜索其中包含%的列值的查询- 这将产生以下输出-

  • 问题内容: 我需要执行django查询,以检查字段是否包含列表中的所有值。该列表的长度将有所不同 例 问题答案: 对于python 3

  • 我有一个Spring Data JPA项目来访问我的数据库并检索用户凭据。我将这个项目打包为jar(不是可执行jar),并将其作为maven依赖项包含到另一个Spring boot项目中,因为我想重用以前开发的相同实体和存储库。每次运行Spring Boot应用程序时,都会出现以下错误: 我开始怀疑我正在做的事情是否可能?PS:我不想将JPA项目与控制器和服务项目混合在一起

  • 我正在回答这个问题,在单个表的日期、整数和字符串数据类型字段上执行多列搜索?并且该方法必须返回Java 8中类型specification 的结果。 实际上,我想在关联实体中搜索,以及全局搜索的一部分。使用是否可能? 我有和@onetomany关系。 EmployeeController.java java 当我点击时,我希望在表和表中进行搜索(可能使用类似)。这可能吗?如果是,我们怎么做? 有什