当前位置: 首页 > 知识库问答 >
问题:

使用多个“喜欢”和可分页创建Spring Repository Select

皇甫乐
2023-03-14

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

因此,没有分页的本机查询如下所示

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

我试图这样解决它:

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

但是没有/空的结果。

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

@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:无法准备语句]具有根本原因

非常感谢您的帮助!

共有1个答案

彭令秋
2023-03-14

对我有用的解决方案是将\n--#page able\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);
 类似资料:
  • 问题内容: 是否可以在一个查询中将多个SQL LIKE通配符串在一起-像这样? 目的是查找同时包含通配符但没有特定顺序的记录。 问题答案: 正确的SQL语法是:

  • 问题内容: 我有这个MySQL查询。 我有具有此内容的数据库字段 为什么这样的查询不起作用?我需要体育或酒吧或两者兼有的领域吗? 问题答案: 该列表仅适用于。对于,您必须使用:

  • 我需要创建一个带有分页的HTML表。数据来自两个不同的来源(可能是来自两个不同数据库的两个表,比如一个Oracle,另一个是MySQL),您不能使用JOIN select语句。为了使它更复杂,我需要以升序显示按时间戳排序的数据(其中一个属性是timestamp)。 例如,源A有45条记录,源B有55条记录。因此,该表将显示总共100条记录,但一次只显示15条记录。因此必须有7页(6页15条记录,1

  • 问题内容: 我在Python 2.6和3.2中遇到了让我感到惊讶的行为: 但是,3.2中的理解显示出更礼貌的举止: 为什么会这样? 问题答案: 您的Python 2.6示例与以下示例等效,这可能有助于阐明: 结果字典中的每个条目都将引用同一对象。如您所见,使该对象发生变异的效果将在每个dict条目中可见,因为它是一个对象。 使用dict理解,或者如果您使用Python 2.6或更早版本并且没有字典

  • 喜欢资讯 取消喜欢资讯 资讯喜欢列表 喜欢资讯 POST /news/{news}/likes Response Headers Status: 201 Created 取消喜欢资讯 DELETE /news/{news}/likes Response Headers Status: 204 No Content 资讯喜欢列表 GET /news/{news}/likes Respons

  • 点喜欢 取消喜欢 喜欢的人列表 点喜欢 POST /feeds/:feed/like Response Status: 201 Created { "message": [ "操作成功" ] } 通知类型 { "channel": "feed:digg", // 通知关键字 "target": 325, // 动态id "content": "@2222 点喜欢了