在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.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; 

@RestController
@RequestMapping(value = "/misaka")
public class MisakaController
{
  @Autowired
  private MisakaService misakaService; 

  @RequestMapping(value = "/list")
  public List<Misaka> getBaselineOverview()
  {
    return misakaService.getMisaka();
  } 

} 

service

import java.util.List; 

public interface MisakaService
{
  List<Misaka> getMisaka();
}

serviceimpl

import java.util.List; 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.stereotype.Service; 

@Service
public class MisakaServiceImpl implements MisakaService
{
  @Autowired
  private MisakaDao misakaDao; 

  @Override
  public List<Misaka> getMisaka()
  {
    Pageable pageable = new PageRequest(1, 2, Direction.ASC, "name");
    Page<Misaka> misakaPage = misakaDao.search(pageable);
    List<Misaka> misakaList = misakaPage.getContent();
    System.out.println(misakaList);
    return misakaList;
  }
} 

dao

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository; 

public interface MisakaDao extends CrudRepository<Misaka, Long>
{
  @Query("SELECT m FROM Misaka m WHERE m.id>4")
  Page<Misaka> search(Pageable pageable);
} 

model

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table; 

@Entity
@Table(name = "t_test")
public class Misaka
{
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long id; 

  @Column(name = "name")
  private String name; 

  public Long getId()
  {
    return id;
  } 

  public void setId(Long id)
  {
    this.id = id;
  } 

  public String getName()
  {
    return name;
  } 

  public void setName(String name)
  {
    this.name = name;
  } 

  @Override
  public String toString()
  {
    return "Misaka [id=" + id + ", name=" + name + "]";
  } 

} 

数据库t_test

id name
1 m1
2 m2
3 m3
4 m4
5 m5
6 m6
7 m7
8 m8
9 m9

输出

Hibernate: select count(misaka0_.id) as col_0_0_ from t_test misaka0_ where misaka0_.id>4
Hibernate: select misaka0_.id as id1_29_, misaka0_.name as name2_29_ from t_test misaka0_ where misaka0_.id>4 order by misaka0_.name asc limit ?, ?
[Misaka [id=7, name=m7], Misaka [id=8, name=m8]] 

以上这篇在JPA的@Query注解中使用limit条件(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 使用JPA中@Query 注解实现update 操作方法(必看)

    使用JPA中@Query 注解实现update 操作,代码如下: @Transactional @Modifying(clearAutomatically = true) @Query(value = "update info p set p.status =?1 where p.id = ?2",nativeQuery = true)  int updateStatusById( String status,  String id); 备注: 1.更新info表下指定id的statu

  • 在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 Cloud 中@FeignClient注解中的contextId属性详解

    目录 @FeignClient注解中的contextId属性 解决方法一 解决方法二 FeignClient注解及参数问题 问题背景 解决办法 @FeignClient注解中的contextId属性 在使用@FeignClient注解前,我们需要先引入其相关依赖,版本为3.0.1 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter

  • Spring @Cacheable注解中key的使用详解

    目录 Spring @Cacheable注解中key使用 下面是几个使用参数作为key的示例 condition属性指定发生的条件 @CachePut @CacheEvict allEntries属性 beforeInvocation属性 @Caching 使用自定义注解 @Cacheable 拼接key Spring @Cacheable注解中key使用 key属性是用来指定Spring缓存方法的返回结果时对应的key的.该属性支持SpringEL表达式.当我们没有指定该属性时,Spring将

  • 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语句报错 项目中需要删

  • 详解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

  • java中注解机制及其原理的详解

    java中注解机制及其原理的详解 什么是注解 注解也叫元数据,例如我们常见的@Override和@Deprecated,注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包.类.接口.字段.方法参数.局部变量等进行注解.它主要的作用有以下四方面: 生成文档,通过代码里标识的元数据生成javadoc文档. 编译检查,通过代码里标识的元数据让编译器在编译期间进行检查验证. 编译时动态处理,编译时通过代码里标识的元数据动态处理,例如动态生成代码. 运行时动态处理,运行时通过代码里标识

  • JPA原生SQL(自定义SQL)分页查询逻辑详解

    目录 JPA原生SQL(自定义SQL)分页查询 经过测试下面方法可以 pageable对象里定义排序的字段 JPA原生SQL分页查询踩坑记录 1.问题简述 2.解决方案 JPA原生SQL(自定义SQL)分页查询 JPA自己写SQL查询的话,分页还稍微麻烦 经过测试下面方法可以 @Query(nativeQuery = true, value = "select * from goods where " + " codeName like CONCAT('%',?1,'%')

  • Android中SQLite 使用方法详解

    Android中SQLite 使用方法详解 现在的主流移动设备像android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧.对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取. 下面就向大家介绍一下SQLite常用的操作方法,为了方便,我将代码写在了Activity的onCreate中: @Ov

  • MongoDB中aggregate()方法实例详解

    目录 前言 1,了解aggergate()方法 2,实现聚合表达式运算符 总结 前言 MongoDB的一个很大的好处是能够使用MapReduce来吧数据库查询的结果简化成一个与原来的集合完全不同的结构.MapReduce把一个数据库查询的值映射为一个完全不同的形式,然后简化结果,使它们的可用性更好. MongoDB有一个MapReduce框架,它也允许你使用聚合来简化吧一个MapReduce操作传输到另一个MapReduce操作的一系列过程.有了MapReduce和聚合,可以用数据生成一些不平凡

  • Spring事务管理中关于数据库连接池详解

    目录 Spring事务管理 环境搭建 标准配置 声明式事务 总结 SqlSessionFactory XML中构建SqlSessionFactory 获得SqlSession的实例 代码实现 作用域(Scope)和生命周期 SqlSessionFactoryBuilder(构造器) SqlSessionFactory(工厂) SqlSession(会话) Spring事务管理 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序

随机推荐