1. 程式人生 > >spring data jpa 中@Query註解分頁pageable查詢

spring data jpa 中@Query註解分頁pageable查詢

持有層程式碼:Repository

@Query(value = "select * from user_liveapp where user_Id = :userId ORDER BY ?#{#pageable}", nativeQuery = true)
Page<UserLiveapp> search(@Param("userId") Long userId, Pageable pageable);
	
@Query(value = "select * from user_liveapp where user_Id = :userId ORDER BY ?#{#pageable}", 
	countQuery="select count(*) from user_liveapp where user_Id = :userId",
	nativeQuery = true)
Page<UserLiveapp> search1(@Param("userId") Long userId, Pageable pageable);

使用這兩種寫法都可以查詢時分頁。

第一種寫法,如果pageable中的page is not lastpage, 後臺日誌會丟擲警告:

2018-07-13 10:32:37.122 [main] WARN   at org.springframework.data.jpa.repository.query.SpelExpressionStringQueryParameterBinder.potentiallyBindExpressionParameters(SpelExpressionStringQueryParameterBinder.java:108) - Setting the parameter with name 'null' and position '1' lead to an exception.
java.lang.IllegalArgumentException: Parameter with that position [1] did not exist
	at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:502)
	at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:692)
	at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:181)
	at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:32)
	……
Hibernate: select count(*) from user_liveapp where user_Id = ?
Hibernate: select count(*) from user_liveapp where user_Id = ?

第二種寫法,如果pageable中的page is not lastpage, 後臺日誌會丟擲警告:

2018-07-13 10:32:37.122 [main] WARN   at org.springframework.data.jpa.repository.query.SpelExpressionStringQueryParameterBinder.potentiallyBindExpressionParameters(SpelExpressionStringQueryParameterBinder.java:108) - Setting the parameter with name 'null' and position '1' lead to an exception.
java.lang.IllegalArgumentException: Parameter with that position [2] did not exist
	at org.hibernate.jpa.spi.BaseQueryImpl.findParameterRegistration(BaseQueryImpl.java:502)
	at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:692)
	at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:181)
	at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:32)
	……
Hibernate: select count(*) from user_liveapp where user_Id = ?

不影響查詢結果,是spring data jpa本身處理丟擲問題.

如果pageable中的page is  lastpage,並且查詢結構size小於pageable中size,則不會又告警觸發

相關推薦

spring data jpa @Query註解pageable查詢

持有層程式碼:Repository @Query(value = "select * from user_liveapp where user_Id = :userId ORDER BY ?#{#pageable}", nativeQuery = true) Page&

Spring Data Jpa多表聯合查詢

參考:https://blog.csdn.net/qq_36144258/article/details/80298354 近期一個專案用到Spring Data Jpa,Jpa用來做單表查詢非常的簡單粗暴,可以說不用寫sql,但是涉及到複雜的多表操作,還是要寫sql,這個時候需要用到@Quer

Spring Data Jpa 進行原生Sql 和條件查詢

因為業務的原因今天寫了一個原生的Spring Data jpa的分頁查詢 : 1 .進行封裝自己PageQuery: public class PageQuery { pub

spring data jpa@Query的模糊查詢

/**  *  * @author: WYL  * @createTime: 2015年7月3日 上午10:14:31  * @history:  * @param keyName 進行匹配的關鍵字

spring-data-JPA使用JpaRepository註解自定義SQL查詢資料庫多表查詢

一. 首先在@Entity註解的類裡面要寫好外來鍵關係.  這個 @ManyToOne 註解可以建立外來鍵關係, 不要在自己傻傻的寫一個 private int grades_id;  寫了這個註解以後它會自動的把 Classes 這張表加上 grades_id 欄位.

Spring Data JPA native query

本地 public 方式 ati epo spring pub acl query Mysql Spring Data JPA and native queries with pagination Spring Data and Native Query with pag

Spring Data JPA的@Query註解使用方式

使用@Query的方式        這種查詢可以宣告在繼承JpaRepository介面方法中,可以在自定義的查詢方法上使用@Query,來指定該方法要執行的自定義的查詢語句,比如: 例子1: @Query("select o from Us

Spring Data JPA常用的註解詳解

好吧!今天就來講下Spring Data JAP中的常用註解~~!先附上昨天的實體類程式碼!我們先看看類前面的兩個註解~!@Entity標識這個實體類是一個JPA實體,告訴JPA在程式執行的時候記得生成這個實體類所對應的表~!@Table(name = "自定義的表名")自定

Spring Data JPA Repository裡的方法查詢引數,需要判斷是否為空的問題

問題: 動態查詢需要判斷引數是否為 null ,在repository裡的那樣的寫法,在網上並沒找到真正適用的寫法。 package com......pubcascade.repository.dao; 簡述: Spring Data JPA雖然大大的簡化了持

使用spring data 對mongodb實現簡單

//對某一書籍下的所有dxh按訪問量排序並分頁 public List<CKDXH> getPartitionDXHCKCountByBookIdandDes(Integer bookId,Integer start,Integer pagesize){

spring boot JPA Kotlin 使用QueryDsl 查詢

介紹 QueryDsl 是一個針對Java的面向物件查詢的工具,支援的模組有JPA,SQL,Mongodb,JDO,Lucense,集合。 sample List<Person> persons = queryFactory.selectFrom(person)

spring data jpa使用redis的通用list及entity儲存方法

/** * 從redis中獲取物件。注意:未進行haskey檢測 * * @param e * @param redis * @param KEY * @param KEY_LIST * @param

Spring-Data-JPA使用Specification實現動態查詢

      最近專案技術選型db框架選擇了使用JPA,剛開始時,使用jpa進行一些單表簡單的查詢非常輕鬆,大家寫的不亦樂乎,後來在遇到多條件動態查詢的業務場景時,發現現有的JpaRepository提供的方法和自己寫@Query已經滿足了不了需求,難不成要對所有的條件和欄位進

Spring Data Jpa 使用@Query標註自定義查詢語句

在使用JPA訪問關係型資料庫和Spring Data Jpa: 分頁和排序兩篇文章中我們學會了如何使用Spring Data Jpa 進行簡單的查詢以及分頁等功能,Spring Data Jpa本身所支援的功能已經非常強大了,也能夠支援大部分的場景。但是,現實場景永遠比想象的要複雜,有時候我們確實需要像S

spring-data-jpa快速入門(二)——簡單查詢

ref spa data mail domain event cif open 寫實 一、方法名解析   1.引言     回顧HelloWorld項目中的dao接口 public interface GirlRepository extends JpaRepos

Spring Data JPA 一:實現多表關聯查詢

多表查詢在spring data jpa中有兩種實現方式,第一種是利用hibernate的級聯查詢來實現,第二種是建立一個結果集的介面來接收連表查詢後的結果,這裡介紹第二種方式。 一、一對一對映 實體 UserInfo :使用者。 實體 Address:家庭住址。 這裡通過外來鍵的方

Spring Boot使用Spring-data-jpa實現查詢(轉)

分頁查詢 log def inpu database ext identity odin btn 在我們平時的工作中,查詢列表在我們的系統中基本隨處可見,那麽我們如何使用jpa進行多條件查詢以及查詢列表分頁呢?下面我將介紹兩種多條件查詢方式。 1、引入起步依賴

spring-data-jpa @Query註解delete語句報錯

專案中需要刪除掉表中的一些資料 @Query("delete from EngineerServices es where es.engineerId = ?1") int deleteByEgId(String engineerId); 但是提示了

Spring Boot使用Spring-data-jpa實現查詢

在我們平時的工作中,查詢列表在我們的系統中基本隨處可見,那麼我們如何使用jpa進行多條件查詢以及查詢列表分頁呢?下面我將介紹兩種多條件查詢方式。 1、引入起步依賴   <dependency> <groupId>org.springframe

Spring Data JPA 二:實現多表關聯查詢

最近在對JPA的使用過程中發現對於單表的操作很是方便,但是當設計到多表聯查的時候就需要有一些特殊的操作了。 專案中有一個場景是後臺需要做一個分頁的列表查詢,所需要的資料分散在兩張表中,如果是用mybatis的話直接定義resultMap,然後手寫SQL就可以了。而在JPA中就需要用到JPQL