JPA @Query時,無法使用limit函數(shù)的問題及解決
JPA @Query時無法使用limit函數(shù)問題
使用ssh時,我加入了springdata-jpa去查詢sql。
在@query中使用limit函數(shù)時,報錯,后來分析原因才知道,springdata-jpa的@query中寫的sql叫JPQL,jpql是不支持limit函數(shù)的。
而原生sql是支持limit函數(shù)的,那我們?nèi)绾卧趒uery里寫原生sql呢?
解決方案
@Query(nativeQuery=true,value = "")
value里寫正常sql語句
如果返回的是數(shù)據(jù)庫對應(yīng)的實體對象,那么sql的返回結(jié)果集字段別名中應(yīng)該與該實體類中對應(yīng)的數(shù)據(jù)庫字段名一致,可以有多余字段,但不能少字段
public interface GaidDao extends LogicDeleteableRepository<Gaid, Long>, JpaSpecificationExecutor<Gaid> { //加入:nativeQuery注解時,寫原生sql,支持limit函數(shù) //不加入:nativeQuery注解時是JPQL。JPQL不支持limit函數(shù) @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中l(wèi)imit函數(shù)的使用
@Query注解不支持limit函數(shù)
所有要使用原生的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;
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計模式之享元模式(Flyweight Pattern)詳解
享元模式(Flyweight Pattern)是一種結(jié)構(gòu)型設(shè)計模式,旨在減少對象的數(shù)量,以節(jié)省內(nèi)存空間和提高性能,本文將詳細(xì)的給大家介紹一下Java享元模式,需要的朋友可以參考下2023-07-07一文帶你掌握J(rèn)ava?ReentrantLock加解鎖原理
這篇文章將為大家詳細(xì)介紹一下Java中ReentrantLock?加鎖和釋放鎖的原理,以及和?Synchronized?的對比。文中的示例代碼講解詳細(xì),希望對大家有所幫助2022-12-12Java實現(xiàn)的質(zhì)因數(shù)分解操作示例【基于遞歸算法】
這篇文章主要介紹了Java實現(xiàn)的質(zhì)因數(shù)分解操作,結(jié)合實例形式較為詳細(xì)的分析了Java基于遞歸算法實現(xiàn)針對整數(shù)的質(zhì)因數(shù)分解相關(guān)操作技巧,需要的朋友可以參考下2018-03-03Spring Web零xml配置原理以及父子容器關(guān)系詳解
這篇文章主要介紹了Spring Web零xml配置原理以及父子容器關(guān)系詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08Java中JVM的雙親委派、內(nèi)存溢出、垃圾回收和調(diào)優(yōu)詳解
這篇文章主要介紹了Java中JVM的雙親委派、內(nèi)存溢出、垃圾回收和調(diào)優(yōu)詳解,類加載器是Java虛擬機(JVM)的一個重要組成部分,它的主要作用是將類的字節(jié)碼加載到內(nèi)存中,并生成對應(yīng)的Class對象,需要的朋友可以參考下2023-07-07詳解如何實現(xiàn)OpenAPI開發(fā)動態(tài)處理接口的返回數(shù)據(jù)
這篇文章主要為大家介紹了OpenAPI開發(fā)動態(tài)處理接口的返回數(shù)據(jù)如何實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04