gpt4 book ai didi

java - 使用 QueryDSL 在两个不同字段中搜索值

转载 作者:行者123 更新时间:2023-12-02 01:37:55 29 4
gpt4 key购买 nike

我正在使用 Spring Boot 和 QueryDSL 执行 REST 请求,但在执行两个字段中具有相同值的查询的搜索时遇到问题(澄清一下,如果一个值位于一个字段或另一个字段中) 。类似这样的事情:

select * from news where title like '%word%' or content like '%word%';

我想做这样的请求(严格来说,可能是不同的):

http://localhost?title=word&content=word

我的 RestController 中有这个:

@GetMapping
public PagedResources<Resource> get(@QuerydslPredicate(root = News.class) Predicate predicate,
@SortDefaults({
@SortDefault(sort = "type", direction = ASC),
@SortDefault(sort = "dateCreated", direction = DESC)
}) Pageable pageable) {
Page<News> pages = newsService.getAllWithPagination(predicate, pageable);
return pagedResourcesAssembler.toResource(pages, newsResourceAssembler);
}

这是我的存储库:

public interface NewsRepository extends JpaRepository<News, Long>, QuerydslPredicateExecutor<News>, QuerydslBinderCustomizer<QNews> {

@Override
default void customize(QuerydslBindings bindings, QNews news) {
bindings.bind(String.class)
.first((SingleValueBinding<StringPath, String>) StringExpression::containsIgnoreCase);
}

}

我厌倦了搜索,但没有找到任何人做过类似的事情。有人对如何做到这一点有任何建议吗?

最佳答案

QNews qnews = QNews.news;
Final BooleanExpression booleanExpression = qnews.title.like("%word%").or(qnews .content.like("%word%"));

just before do this check null values in queryparam

关于java - 使用 QueryDSL 在两个不同字段中搜索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54942442/

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