java - Spring Boot PagingAndSortingRepository 搜索:组合多个参数进行复杂搜索
问题描述
您好我正在尝试在我的 REST-API 中构建一个复杂的搜索端点。我有多个参数,喜欢以复杂的方式组合它们。这些是我的参数:
@Param(value = "applicationId") String applicationId,
@Param(value = "mdName01") String mdName01,
@Param(value = "mdName02") String mdName02,
@Param(value = "mdName03") String mdName03,
@Param(value = "mdName04") String mdName04,
我喜欢做的是这样的事情:
findAllBy: applicationID AND (mdName1 OR mdName2 OR MdName3 OR MdName4)
因为我找不到适合我的东西,所以()
我将声明更改为:
findAllBy: applicaionID AND mdName1 OR applicaionID AND mdName2 OR applicaionID AND mdName3 [...]
这就是我的方法现在的样子:
Page<vwFact> findAllByApplicationIdAndMdName01StartingWithOrApplicationIdAndMdName02StartingWithOrApplicationIdAndMdName03StartingWithOrApplicationIdAndMdName04StartingWith (
@Param(value = "applicationId") String applicationId,
@Param(value = "mdName01") String mdName01,
@Param(value = "mdName02") String mdName02,
@Param(value = "mdName03") String mdName03,
@Param(value = "mdName04") String mdName04,
Pageable pageable
);
现在,当我运行请求时,我得到以下错误:java.util.NoSuchElementException
,所以看起来我已经习惯了小参数。那么有没有一个简单的解决方法,或者一般来说我是如何习惯于实现如此复杂的搜索查询的?
解决方案
您可以将@Query用于非常易于使用的复杂查询。
使用 @Query 您的代码将类似于下面的代码片段。
@Query(SELECT v FROM vwFact v WHERE v.applicationId = :applicationId and v.mdName01 = :mdName01)
Page<vwFact> findAllByApplicationIdAndMdName01StartingWithOrApplicationIdAndMdName02StartingWithOrApplicationIdAndMdName03StartingWithOrApplicationIdAndMdName04StartingWith (
@Param(value = "applicationId") String applicationId,
@Param(value = "mdName01") String mdName01,
@Param(value = "mdName02") String mdName02,
@Param(value = "mdName03") String mdName03,
@Param(value = "mdName04") String mdName04,
Pageable pageable
);
这是一个很好的教程。
推荐阅读
- performance-testing - 为什么 web_reg_find 在 LoadRunner 中看不到某些静态文本?
- oracle - 如何为既是主键又是外键的同一列创建两个索引?
- reactjs - this.props 不会从 react/redux 加载数据
- bash - 从linux中文件的特定字符创建子文件夹
- r - Cox 比例风险模型-交互作用
- javascript - 如何修复节点 UnhandledPromiseRejectionWarning
- android - 图形在 libgdx 中占用 0.5 GB 内存
- javascript - 我们如何在 Angular 8 中添加链接?
- r - 使用具有多个条件的 gsub 替换 PDF 中的单词列表
- angular - Angular 组件和 ngOnInit 的自定义装饰器