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

使用Spring BOOT REST和Spring Data JPA(使用Criteria API)实现复杂的搜索功能

羊城
2023-03-14

我需要使用Spring Boot REST和Spring Data JPA使用Criteria API实现复杂的搜索特性。我需要提供下面的RPI/College?select=*&where=name:democollegelocation:lastaff{firstname:foo,lastname:boo,workexp>10}并键入[1,2,3]

拼贴对象具有名称位置类型字段和人员列表。它与Staff具有OneTomany关系,因此College可以有一个或多个工作人员。

基于uri,我需要使用criteria API构建查询。

我发现实现org.springframework.data.jpa.domain.specificationtopRedicate()方法非常复杂。有没有这样的例子处理如此复杂的搜索过滤器?

提前道谢。

共有1个答案

司空宗清
2023-03-14

在您的情况下,我认为最好的选择是specification-arg-resolver库,它提供了以声明方式构建规范的方便方法。例如,以下代码

@RequestMapping("/customers")
public Object findByName(
        @And({
            @Spec(path="registrationDate", params="registeredBefore", spec=DateBefore.class),
            @Spec(path="lastName", spec=Like.class)}) Specification<Customer> customerSpec) {

    return customerRepo.findAll(customerSpec);
}

对应于此请求:

GET http://myhost/customers?registeredBefore=2015-01-18&lastName=Simpson

它支持以下规范:Like、LikeIgnoreCase、Equal、EqualIgnoreCase、In、Null、NotNull、GreaterThan、GreaterThanOrEqual、LessThanOrEqual、DateBetween,Join,Join fetch,它允许您将它们组合起来,组成复杂的表达式。

 类似资料:
  • 问题内容: 我正在寻找一种在REST API中为搜索查询建模的可靠方法。 在我的api中,您可以使用查询参数在资源的URI中指定搜索条件。 例如: 在服务器端,搜索字符串映射到所需的基础技术。根据其余资源,这可以是一个SQL查询,Hibernate Criteria api,另一个Web服务调用,… 这两个示例很简单,足以支持,但是我还需要更复杂的搜索功能,例如子字符串搜索,日期前后的搜索,NOT

  • 本文向大家介绍使用Lucene.NET实现站内搜索,包括了使用Lucene.NET实现站内搜索的使用技巧和注意事项,需要的朋友参考一下 导入Lucene.NET 开发包 Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中

  • 本文向大家介绍使用JavaScrip模拟实现仿京东搜索框功能,包括了使用JavaScrip模拟实现仿京东搜索框功能的使用技巧和注意事项,需要的朋友参考一下 使用js模拟实现京东的搜索框,主要用了js中的onfocus(注册焦点事件),onblur(失去焦点的事件); 主要实现了: 在鼠标点进去的时候,里面的默认内容消失; 在输入之后,再点击搜索框外,输入的内容还在搜索框中; 如果输入为空,点击搜索

  • 本文向大家介绍使用JS location实现搜索框历史记录功能,包括了使用JS location实现搜索框历史记录功能的使用技巧和注意事项,需要的朋友参考一下 首先,来看下效果图(样式什么的就不必吐槽了哈) html代码 css代码 js代码(这里需引入jQuery) 总结 以上所述是小编给大家介绍的使用JS location实现搜索框历史记录功能,希望对大家有所帮助,如果大家有任何疑问请给我留言

  • 问题内容: 我正在根据CS50的网络系列创建一个应用程序,该程序要求我仅使用原始SQL查询而不是ORM。 我正在尝试提供一个搜索功能,用户可以在其中查找存储在数据库中的书籍列表。我想让他们查询名为“ books”的表格中的ISBN,标题,作者列 目前,它确实拍摄了“ GET”请求,没有问题,但是它没有返回任何数据,我认为问题出在我编写的SQL行中。 这是路线: 这是我的模板 任何人都可以发现问题吗

  • 本文向大家介绍layui.tree组件的使用以及搜索节点功能的实现,包括了layui.tree组件的使用以及搜索节点功能的实现的使用技巧和注意事项,需要的朋友参考一下 由于项目树形节点比较多需要增加节点搜索功能,所以研究了一下加上社区伙伴的支持,目前功能可以简单实现但细节还需要修改,添加上了组件的基本使用方法和属性,现在分享出来~ HTML: JavaScript: 效果如图: 搜索功能还有待完善