意外的令牌:在休眠状态下使用 spring data jpa 时的位置
Posted
技术标签:
【中文标题】意外的令牌:在休眠状态下使用 spring data jpa 时的位置【英文标题】:unexpected token:where when using spring data jpa with hibernate 【发布时间】:2018-04-26 20:09:04 【问题描述】:我正在尝试在我的项目中使用 spring data jpa 和 hibernate。我在存储库中添加了注释@Query,尝试编写一个带有Pageable参数的hql,如下所示:
@Query("select name,code,id from Region where fatherId is NULL or fatherId=''")
Page<Region> findAllRoots(Pageable pageable);
但是当我尝试编译并运行它时,我得到了意想不到的令牌:控制台打印的位置。完整信息是:
Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: where near line 1, column 14 [select count(where) from com.nitccs.demo.entity.Region where fatherId is NULL or fatherId='']
怎么会这样跑?我完全糊涂了。为什么它不是 select count(id) 之类的?我确定我的 pojo 中没有名为 where 的变量。
【问题讨论】:
【参考方案1】:You need an alias in your query in order for the count query necessary for Pageable
results getting created correctly。所以这应该可行。
select r from Region r where r.fatherId is NULL or r.fatherId=''
【讨论】:
谢谢,没有你的帮助,我需要更长的时间才能意识到这一点。谢谢你,真的。【参考方案2】:在您上面的查询中,您做错了,您期望 name,code,i
d 以及它将如何转换为 Region
对象
如果您想要分页数据,请尝试使用SpringData specifications
click here 看看这个
【讨论】:
谢谢!我在你的指导下修好了。好像没有写过hql,也没有写过sql。 表达感谢的方式就是点赞并接受正确答案。以上是关于意外的令牌:在休眠状态下使用 spring data jpa 时的位置的主要内容,如果未能解决你的问题,请参考以下文章
休眠错误消息:意外令牌:NULLS(脚本文件行中的错误:13 意外令牌:NULLS)
Groovy:使用 Grails 和 Spring 安全核心插件时出现意外令牌
Spring Boot,Hibernate,Querydsl:antlr.NoViableAltException:意外令牌