Spring data jpa注解@Query中写原生sql语句不能和Pageable分页一起用吗?

想不到名字了 2016-06-06 11:00:02

@Query(value="select b.* from book b left join book_cat_relation bcr on b.id=bcr.book_id where bcr.cat_id=?1 and b.title like ?2)",nativeQuery=true)//原生sql语句
Page<Book> findbookcat(Long catid,String title,Pageable pageable);

我需要进行多对多查询 有个中间表没有实体类 hql用不了 所以通过写原生sql语句进行查询 但是启动报错 说Pageable不能和原生sql语句在一起?这是为什么啊 该怎么解决?


Caused by: org.springframework.data.jpa.repository.query.InvalidJpaQueryMethodException: Cannot use native queries with dynamic sorting and/or pagination in method public abstract org.springframework.data.domain.Page com.yes.biz.book.dao.BookDao.findbookcat(java.lang.Long,java.lang.String,org.springframework.data.domain.Pageable)
at org.springframework.data.jpa.repository.query.NativeJpaQuery.<init>(NativeJpaQuery.java:55)
at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:72)
at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromQueryAnnotation(JpaQueryFactory.java:53)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:144)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:212)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:77)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:435)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.g

...全文
33383 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
JACKROMER 2018-12-13
  • 打赏
  • 举报
回复
第一把:nativeQuery去掉,为ture代表原生SQL执行,编译会报错的. 第二:select XXX ORDER BY ?#{#pageable} 把这个加上
  • 打赏
  • 举报
回复
sort的值是数据库的字段属性还是实体类的啊
晗光剑灵禺期 2017-09-30
  • 打赏
  • 举报
回复
sql 语句最后加上 “order by ?#{#pageable}”,然后countQuery参数写上获取你这条sql查询结果数的sql
染的人 2017-09-14
  • 打赏
  • 举报
回复
能用的。 @Query(value = "SELECT d fFROM XX d /*#pageable*/", countQuery = "SELECT COUNT(*) FROM xx", nativeQuery = true)
a309131664 2017-03-14
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/38349930/spring-data-and-native-query-with-pagination 解决方式
boxxxxxxd 2016-11-09
  • 打赏
  • 举报
回复
引用 11 楼 meshowmeshow 的回复:
apring data jpa 19.5 以后支持这么用,看文档,可是我试了下,还是提示不能用,不知道怎么回事。
你解决了吗???
meshowmeshow 2016-10-10
  • 打赏
  • 举报
回复

apring data jpa 19.5 以后支持这么用,看文档,可是我试了下,还是提示不能用,不知道怎么回事。
  • 打赏
  • 举报
回复
请问具体如何做呢,小白一枚。
想不到名字了 2016-07-07
  • 打赏
  • 举报
回复
引用 4 楼 linhaiguo 的回复:
[quote=引用 2 楼 u013997090 的回复:] 人呢 都去午睡了吗
楼主这个问题解决了吗?我也遇到了,还没有解决》[/quote] 问题老早解决了 一个月都忘记结贴了 不知道你们解决了没 就像8楼说的 在实体类中配置的ManyToMany,直接写jpql语句就行了
Small_Driver 2016-07-05
  • 打赏
  • 举报
回复
多对多不用连接中间表,因为实体类已经配置ManyToMany
ffjing 2016-07-01
  • 打赏
  • 举报
回复
当我没说 。
yuewutao 2016-06-23
  • 打赏
  • 举报
回复
有没有jpa高手指点一下
hfyanzi 2016-06-21
  • 打赏
  • 举报
回复
我也遇到了,楼主来说下
为了那份宁静 2016-06-18
  • 打赏
  • 举报
回复
引用 2 楼 u013997090 的回复:
人呢 都去午睡了吗
楼主这个问题解决了吗?我也遇到了,还没有解决》
qq_21320661 2016-06-13
  • 打赏
  • 举报
回复
如果你要多表查询的话 ,你可以在service中分页
想不到名字了 2016-06-06
  • 打赏
  • 举报
回复
大神们快来啊
想不到名字了 2016-06-06
  • 打赏
  • 举报
回复
人呢 都去午睡了吗

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧