gpt4 book ai didi

java - Spring REST @Query 可变参数

转载 作者:行者123 更新时间:2023-11-30 10:19:46 25 4
gpt4 key购买 nike

我目前正在 Spring 构建一个 REST API,并想添加一个搜索方法,该方法接受一个字母列表并根据这些字母搜索序列。我下面的代码是我到目前为止所取得的成就的一个例子。它完成这项工作,并根据字母参数进行搜索。但它仅限于必须使用方法中指定的参数数量。

@Query("SELECT f FROM Item f " +
"WHERE LOWER(f.title) LIKE CONCAT(" +
" '%',LOWER(:letter1)," +
" '%',LOWER(:letter2)," +
" '%',LOWER(:letter3)," +
" '%',LOWER(:letter4),'%')")
@RestResource(rel = "title-fragmented", path="findByFragments")
Page<Item> findByFragmented(@Param("letter1") String letter1,
@Param("letter2") String letter2,
@Param("letter3") String letter3,
@Param("letter4") String letter4,
Pageable page
);

我想知道是否可以在不指定要连接的字母数的情况下实现相同的结果。所以例如当

/api/v1/search/findByfragments?letter=A&letter=B&letter=C.... 

被调用,它将起作用。我试过将字符串数组作为 @Param 值传递,但无法正常工作。

提前致谢。

最佳答案

通过使用 SpEL 表达式拆分单个字符串并将它们之间的字母替换为通配符 (%) 表达式解决了我的问题。以下示例适用于可能遇到相同问题的任何人:

@Query(
"SELECT f FROM Item f WHERE LOWER(f.title) LIKE CONCAT('%',LOWER(:#{#title.replaceAll('','%')}),'%')"
)
@RestResource(rel = "item-title-by-fragments", path="fragments")
Page<Item> findUsingFragments(@Param("title") String title, Pageable page);

关于java - Spring REST @Query 可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48476185/

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