在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");
PagemisakaPage=misakaDao.search(pageable);
ListmisakaList=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条件(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。