或 '(at-6ren">
gpt4 book ai didi

java - 使用多个 "like"和 Pageable 创建 Spring Repository Select

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:50:34 24 4
gpt4 key购买 nike

我正在使用 H2-Database 和 Spring-Data PagingRepository。我喜欢使用分页并从数据库中选择字段 html 包含 '@''[at]' 文章 em> 或 '(at)''mail' ...

所以没有分页的原生查询看起来像

SELECT * FROM article  WHERE (html LIKE '%@%' or html LIKE '%(at)%' or html LIKE '%[at]%' or ...)

我试过这样解决:

Page<Article> findByHtmlContainingOrderByDateDesc(String[] string,  Pageable pageable);

但是没有/空结果。

我尝试的第二种方法是使用 native 查询:

@Query(value = "SELECT * FROM article  WHERE (html LIKE '%@%' or html LIKE '%(at)%') ORDER BY DATE desc \n#pageable\n" , 
nativeQuery = true,
countQuery = "SELECT count(*) FROM article WHERE (html LIKE '%@%' or html LIKE '%(at)%')")
Page<Article> findAll(@Param("pageable") Pageable pageable);

但我遇到了异常:

嵌套异常是 org.hibernate.exception.SQLGrammarException: 无法准备语句] 具有根本原因

非常感谢您的帮助!

最佳答案

对我有用的解决方案是将 \n-- #pageable\n 添加到自定义查询中。所以我结束了

@Query(value = "SELECT * FROM article  WHERE (html LIKE '%@%' or html LIKE '%(at)%') ORDER BY DATE desc \n-- #pageable\n" , nativeQuery = true,
countQuery = "SELECT count(*) FROM article WHERE (html LIKE '%@%' or html LIKE '%(at)%')")
Page<Article> findAll(@Param("pageable") Pageable pageable);

关于java - 使用多个 "like"和 Pageable 创建 Spring Repository Select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43718266/

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