欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

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

时间:2022-12-07 09:37:05|栏目:JAVA代码|点击:

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;

上一篇:idea中断点类型之All和Thread的区别介绍

栏    目:JAVA代码

下一篇:Java一元稀疏多项式计算器

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

本文地址:http://www.codeinn.net/misctech/220757.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有