网站首页 SpringBoot正文

Spring Data JPA @Query自定义SQL在MySQL执行报unexpected token: limit异常的解决

出错的代码如下

@Cacheable(value="store_db_SsV2AllmessageStatusRepository", key="#root.methodName+#root.args")
	@Query(value="select * from SsV2AllmessageStatus where msgtype=:msgtype and sstoreid=:sstoreid  ORDER BY id DESC limit 0,5")
	List<SsV2AllmessageStatus>  getNewMessage(Integer  msgtype,Integer sstoreid);




在Mysql执行报错:

antlr.NoViableAltException: unexpected token: limit

原因是limit属于MySQL特有的特性,而@Query默认只接受通用SQL。

解决方法是简单地加上nativeQuery = true即可。如下


@Cacheable(value="store_db_SsV2AllmessageStatusRepository", key="#root.methodName+#root.args")
	@Query(value="select * from SsV2AllmessageStatus where msgtype=:msgtype and sstoreid=:sstoreid  ORDER BY id DESC limit 0,5", nativeQuery = true)
	List<SsV2AllmessageStatus>  getNewMessage(Integer  msgtype,Integer sstoreid);


还没有人评论?赶快抢个沙发~

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。