意外令牌:当使用带有hibernate的spring数据jpa时

时间:2017-11-14 01:31:52

标签: hibernate jpa spring-data-jpa

我正在尝试在我的项目中使用spring数据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='']

怎么会像这样跑?我完全糊涂了。为什么它不是选择计数(id)或什么?我确信我没有在我的pojo中找到名为where的变量。

2 个答案:

答案 0 :(得分:0)

在您上面的查询中,您做错了,您期待name,code,i d以及它将如何转换为Region对象

如果您想要分页数据,请尝试使用SpringData specifications

click here看看这个

答案 1 :(得分:0)

You need an alias in your query in order for the count query necessary for Pageable results getting created correctly。所以这应该有用。

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
     adapter.notifyItemRemoved(viewHolder.getAdapterPosition());
     list.remove(position);
     adapter.notifyDataSetChanged();
}