gpt4 book ai didi

java - Spring Boot PagingAndSortingRepository搜索: Combine multiple params for complex search

转载 作者:行者123 更新时间:2023-12-01 17:46:50 25 4
gpt4 key购买 nike

您好,我正在尝试在 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

);

这是一个不错的 tutorial首先。

关于java - Spring Boot PagingAndSortingRepository搜索: Combine multiple params for complex search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54231717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com