当我使用Pageable时,分页找不到任何结果

时间:2017-11-30 14:41:56

标签: hibernate jpa spring-data-jpa

这是我的存储库

public interface OperateLogRepository extends JpaRepository<OperateLog, Long> {

  Page<OperateLog> findByBelongTypeAndBelongId(Integer belongType, Long belongId, Pageable pageable);
}

这是我的服务

public PageResp<OperateLogResp> findOperateLog(UserWrapper userWrapper, PageReq pageReq) {
Page<OperateLog> pageResult = logRepository
    .findByBelongTypeAndBelongId(userWrapper.getBelongTypeCode(), userWrapper.getBelongId(),
        new PageRequest(pageReq.getPage() - 1, pageReq.getSize(), Direction.DESC, "id"));
return PageResp.from(pageResult.map(OperateLogResp::from), pageReq);

}

但是,我无法从此查询中获得任何结果。

我尝试打印sql,像这样的sql:

selectas [all fields] from t_operate_log operatelog0_ where 
operatelog0_.f_belong_type=? and operatelog0_.f_belong_id=? order by operatelog0_.f_id desc limit ?

sql 对我有用,

但是,hibernate绑定参数:

binding parameter [1] as [INTEGER] - [2]
binding parameter [2] as [BIGINT] - [1]

缺少限制的第三个参数。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

您必须使用Pageable而不是PageRequest:

Pageable p = new PageRequest(pageReq.getPage() - 1, pageReq.getSize(), Direction.DESC, "id");

然后

Page<OperateLog> pageResult = logRepository
    .findByBelongTypeAndBelongId(userWrapper.getBelongTypeCode(), userWrapper.getBelongId(), p);