在JPA的@Query注解中使用limit条件(详解)
在@Query注解注释的JPQL语句中写limit语句是会报错的
unexpectedtoken:limitnearline....
解决方法是讲@Query注解中的limit语句去掉,然后传一个Pageablepageable=newPageRequest(offset,limit)进去
示例代码:
controller
importjava.util.List; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(value="/misaka") publicclassMisakaController { @Autowired privateMisakaServicemisakaService; @RequestMapping(value="/list") publicListgetBaselineOverview() { returnmisakaService.getMisaka(); } }
service
importjava.util.List; publicinterfaceMisakaService { ListgetMisaka(); }
serviceimpl
importjava.util.List; importorg.springframework.beans.factory.annotation.Autowired; importorg.springframework.data.domain.Page; importorg.springframework.data.domain.PageRequest; importorg.springframework.data.domain.Pageable; importorg.springframework.data.domain.Sort.Direction; importorg.springframework.stereotype.Service; @Service publicclassMisakaServiceImplimplementsMisakaService { @Autowired privateMisakaDaomisakaDao; @Override publicListgetMisaka() { Pageablepageable=newPageRequest(1,2,Direction.ASC,"name"); Page misakaPage=misakaDao.search(pageable); List misakaList=misakaPage.getContent(); System.out.println(misakaList); returnmisakaList; } }
dao
importorg.springframework.data.domain.Page; importorg.springframework.data.domain.Pageable; importorg.springframework.data.jpa.repository.Query; importorg.springframework.data.repository.CrudRepository; publicinterfaceMisakaDaoextendsCrudRepository{ @Query("SELECTmFROMMisakamWHEREm.id>4") Page search(Pageablepageable); }
model
importjavax.persistence.Column; importjavax.persistence.Entity; importjavax.persistence.GeneratedValue; importjavax.persistence.GenerationType; importjavax.persistence.Id; importjavax.persistence.Table; @Entity @Table(name="t_test") publicclassMisaka { @Id @GeneratedValue(strategy=GenerationType.AUTO) privateLongid; @Column(name="name") privateStringname; publicLonggetId() { returnid; } publicvoidsetId(Longid) { this.id=id; } publicStringgetName() { returnname; } publicvoidsetName(Stringname) { this.name=name; } @Override publicStringtoString() { return"Misaka[id="+id+",name="+name+"]"; } }
数据库t_test
1
m1
2
m2
3
m3
4
m4
5
m5
6
m6
7
m7
8
m8
9
m9
输出
Hibernate:selectcount(misaka0_.id)ascol_0_0_fromt_testmisaka0_wheremisaka0_.id>4 Hibernate:selectmisaka0_.idasid1_29_,misaka0_.nameasname2_29_fromt_testmisaka0_wheremisaka0_.id>4orderbymisaka0_.nameasclimit?,? [Misaka[id=7,name=m7],Misaka[id=8,name=m8]]
以上这篇在JPA的@Query注解中使用limit条件(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。