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

如何用Spring-Data-JPA2.1实现长/复杂查询

易宣
2023-03-14

我需要一些关于实现spring JPA查询的建议。由于输入长度的原因,我的查询很复杂。
作为输入,我有:

  • 15条件-如果不为空,则检查相等;
  • 2条件-在if not null之间进行检查
  • 此外,输出必须是可分页的。
Page<A> findAllByParam1AndParam2AndParam3Between...(@Nullable String param1, @Nullable String param2, @Nullable Integer param3,...) 

有其他选择吗?
唯一的方法是用CriteriaBuilder构建一个自定义查询?

共有1个答案

丁曦
2023-03-14

派生查询,即从方法名派生实际查询的查询,对于这样长的或复杂的查询是错误的工具,因为结果名称变得不可用。

您应该考虑的备选方案是

>

  • 使用@query批注中提供的固定查询:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.at-query

    使用动态组装where子句的规范:https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specification-and-queryDSL/

  •  类似资料:
    • 我是Spring Data MongoDB的新手,我正在尝试用Spring Data MongoDBJava实现聚合查询。我尝试过从这个问题中搜索,并使用进行搜索,但仍然没有结果。 我的数据格式: 我的查询: 这是我在Javascript后端使用的查询,我可以用Mongoose很容易地做到这一点。然而,我对它的Java实现有一些困难。 当我尝试运行此程序时,会出现以下错误: 当我删除从组聚合中,我

    • 我们在应用程序中使用了Hibernate/JPA、Spring、Spring Data和Spring Security。我有一个标准的实体,它是使用JPA映射的。此外,我还有一个 它遵循Spring数据约定来命名查询方法。我有一个实体 如何避免这种递归?是否有“规范的方式”来加载实体?或者有没有一种方法可以防止Hibernate/JPA冲洗?

    • 此外,应该对每个邮件的收件人进行排序--如果有多个类型为MessageOwnerType.to的messageOwner,那么应该按字母顺序选择第一个作为邮件的排序值。 在纯SQL中,我可能会使用某种子查询来完成此操作。使用Spring数据规范&Sort Object有类似的可能吗?除非迫不得已,否则我宁愿不必重写QueryDSL/RAW标准中的所有内容。

    • 本文向大家介绍Spring Data JPA 复杂/多条件组合分页查询,包括了Spring Data JPA 复杂/多条件组合分页查询的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: buildPageRequest()方法,导入的包,下面是自己写的方法 getPageMap()方法: JPA的Page也是集合,获取Page集合里的值,最后获取到的这些(key,value) 以上就是

    • 我一直在学习MongoDB在Spring Boot中的实现。然而,我遇到了复杂查询的问题。 对于如何从Spring Boot到MongoDB实现复杂查询,我找不到任何正确的解决方案。 null POJO类是bellow的 我想实现什么? 我想做一个查询,这将返回给我一个人,他的宠物有一个玩具(PetToy)与名称“泰迪”。 事先非常感谢。

    • 问题内容: 我是Elastic和spring-data- elastic的新手。我一直在这里和网络的其他区域进行搜索,但到目前为止,仍找不到我的问题的答案。我希望SO能够提供帮助。 我正在索引表中的一些记录(firstName,lastName),并且希望能够允许高级搜索。因此,例如,如果我的名字是“ Frances”,并且输入“ Frank”,那么系统足够智能,可以返回记录。与“鲁宾逊”和“鲁宾