JPA @Query时,无法使用limit函数的问题及解决

目录
  • JPA@Query时无法使用limit函数问题
    • 解决方案
  • JPA中limit函数的使用
    • @Query注解不支持limit函数

JPA @Query时无法使用limit函数问题

使用ssh时,我加入了springdata-jpa去查询sql。

在@query中使用limit函数时,报错,后来分析原因才知道,springdata-jpa的@query中写的sql叫JPQL,jpql是不支持limit函数的。

而原生sql是支持limit函数的,那我们如何在query里写原生sql呢?

解决方案

@Query(nativeQuery=true,value = "") 

value里写正常sql语句

如果返回的是数据库对应的实体对象,那么sql的返回结果集字段别名中应该与该实体类中对应的数据库字段名一致,可以有多余字段,但不能少字段

public interface GaidDao extends LogicDeleteableRepository<Gaid, Long>, JpaSpecificationExecutor<Gaid> {
	//加入:nativeQuery注解时,写原生sql,支持limit函数
	//不加入:nativeQuery注解时是JPQL。JPQL不支持limit函数
	@Query(nativeQuery=true, value = "select gaid from sdp_gaid where geo = ?1 and deleted = 0 order by id desc limit 1000000")
	List<String> findGaidByGeo(String geo);
}

JPA中limit函数的使用

@Query注解不支持limit函数

所有要使用原生的sql语句

@Query(value = "select * from d_quarterly_report where report_type=?1 order by cycle_number desc limit 1" ,nativeQuery = true)
    QuarterlyReport getLastUploadByReportType(Boolean type);

而不是

@Query(value = "select * from d_quarterly_report where report_type=?1 order by cycle_number desc limit 0,1",nativeQuery = true,)
    QuarterlyReport getLastUploadByReportType(Boolean type);

jpa中不支持limit 0,1的写法只能写成limit 1;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Spring Data JPA使用@Query注解(Using @Query)

    经过几天的折腾,终于到了学习一个重量级的查询方式上,使用@Query注解,使用注解有两种方式,一种是JPQL的SQL语言方式,一种是原生SQL的语言,略有区别,后者我们更熟悉一些.话不多说,看代码. 1.在CustomerRepository里添加 /** * 模糊匹配 * @param bauer * @return */ @Query("select c from Customer c where c.firstName=?1") Customer findByFirstName2

  • 在JPA的@Query注解中使用limit条件(详解)

    在@Query注解注释的JPQL语句中写limit语句是会报错的 unexpected token :limit near line .... 解决方法是讲@Query注解中的limit语句去掉,然后传一个Pageable pageable=new PageRequest(offset,limit)进去 示例代码: controller import java.util.List; import org.springframework.beans.factory.annotation.Autow

  • Spring data jpa @Query update的坑及解决

    目录 Springdatajpa@Queryupdate的坑 可以参考这个例子 Springdatajpa的update操作 1.调用保存实体的方法 2.@Query注解,自己写JPQL语句 Spring data jpa @Query update的坑 jpa默认只有save(Entity)方法,如果数据库中没有记录就新增,如果数据库中有记录就更新记录. 如果要手动添加update(Entity)方法, 可以参考这个例子  @Modifying  @Query(value = "UPDATE

  • 聊聊Spring data jpa @query使用原生SQl,需要注意的坑

    目录 Spring data jpa @Query 使用原生Sql的坑 根据代码来解说: 需要注意的方法有以下几点 SpringData JPA @Query动态SQL语句 思路 实现 Spring data jpa @Query 使用原生Sql的坑 根据代码来解说: @Query(value = "select bill.id_ as id, bill.created_date as date, bill.no, lawyer_case .case_no as caseNo, " +

  • JPA @Query时,无法使用limit函数的问题及解决

    目录 JPA@Query时无法使用limit函数问题 解决方案 JPA中limit函数的使用 @Query注解不支持limit函数 JPA @Query时无法使用limit函数问题 使用ssh时,我加入了springdata-jpa去查询sql. 在@query中使用limit函数时,报错,后来分析原因才知道,springdata-jpa的@query中写的sql叫JPQL,jpql是不支持limit函数的. 而原生sql是支持limit函数的,那我们如何在query里写原生sql呢? 解决方案

  • spring data jpa @Query注解中delete语句报错的解决

    目录 spring data jpa @Query注解中delete语句报错 项目中需要删除掉表中的一些数据 JPA使用@Query注解实例 1. 一个使用@Query注解的简单例子 2. Like表达式 3. 使用Native SQL Query 4. 使用@Param注解注入参数 5. SPEL表达式(使用时请参考最后的补充说明) 6. 一个较完整的例子 7. S模糊查询注意问题 8. 解释例6中错误的原因 spring data jpa @Query注解中delete语句报错 项目中需要删

  • php运行时动态创建函数的方法

    本文实例讲述了php运行时动态创建函数的方法.分享给大家供大家参考.具体分析如下: 一般的语言函数必须定义了在运行,而php支持在运行时动态创建函数,下面是一个简单的范例,在运动时根据不同的条件创建函数$a <?php if (count($_POST) > 0) { $prepped = create_function('$a', 'return trim($_POST[$a]);'); } elseif (count($_GET) > 0) { $prepped = create_f

  • 探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法

    [造成原因]:Because PHP's integer type is signed, and many IP addresses will result in negative integers. [解决办法]:其官方手册中提到,可以"you need to use the "%u" formatter of sprintf() or printf() to get the string representation of the unsigned IP address&

  • MySql分页时使用limit+order by会出现数据重复问题解决

    目录 摘要 问题描述 分析问题 解决问题 摘要 能把复杂的知识讲的简单很重要 在学习的过程中我们看过很多资料.视频.文档等,因为现在资料视频都较多所以往往一个知识点会有多种多样的视频形式讲解.除了推广营销以外,确实有很多人的视频讲解非常优秀,例如李永乐老师的短视频课,可以在一个黑板上把那么复杂的知识,讲解的那么容易理解,那么透彻.而我们学习编程的人也是,不只是要学会把知识点讲明白,也要写明白. 问题描述 在 MySQL 中我们通常会采用 limit 来进行翻页查询,比如 limit(0,10)

  • 基于spring data jpa @query返回map的踩坑记录

    目录 spring data jpa @query返回map踩坑记录 设置JPA的Query返回Map对象 spring data jpa @query返回map踩坑记录 最近用spring data jpa,网上看的一些教程,有的说是返回的Object[]数组,有的说是直接返回的对象,亲身验证了一下,发现主要看写法和返回结果. 用的版本是这样的: dao代码如下: public interface UserRepository extends JpaRepository<User, Integ

  • 使用jpa的实体对象转json符串时懒加载的问题及解决

    目录 解决转json符串时懒加载问题方法(1) 解决转json符串时懒加载问题方法(2) Rest风格中关于JPA使用懒加载的坑 解决转json符串时懒加载问题方法(1) 1.导入hibernate5转json的Maven依赖: <dependency>     <groupId>com.fasterxml.jackson.datatype</groupId>     <artifactId>jackson-datatype-hibernate5</a

  • SQL中limit函数语法与用法(MYSQL获取限制某行数据)

    1.limit函数的语法和用法 (1)常用且简单的语法和用法 ①语法:limit n 即limit <参数> 具体语法:select <字段1>,...,<字段n> from <表名> (where <条件> order by <字段1>...<字段n> asc|desc) limit n 说明:括号内的语句可省略 参数说明: n:为阿拉伯数字,表示前n行. ②用法:用于获取前n行数据. (2)另一种(两个参数)语法和用法

随机推荐