调用Spring data JPA结果数据为空

大_于 发布于 2016/04/20 11:44
阅读 6K+
收藏 0
package com.example.myapp.domain;

import org.springframework.data.domain.*;
import org.springframework.data.repository.*;

public interface CityRepository extends Repository<City, Long> {

    Page<City> findAll(Pageable pageable);

    City findByNameAndCountryAllIgnoringCase(String name, String country);

}

代码如官方文档提供,调用上面的分页函数findAll返回的Page<City>对象中,只有数据库记录总数,却没有返回记录对象,content的size为0;




加载中
0
中场三分
中场三分

Page<City> findAll(Pageable pageable);

查询结果为空的问题,我猜测有两个原因:

1、页码应从0开始,见PageRequest对象源码构造函数的javadoc;

2、继承PagingAndSortingRepository接口,该接口已提供分页的findAll;

通常会选择继承JpaRepository接口,提供了基础CRUD、分页、排序等自动实现。

自定义的分页查询你只需方法最后一个参数为Pageable,返回类型定义为Page<T>即可。

比如你的第二个方法:

City findByNameAndCountryAllIgnoringCase(String name, String country);

分页可写成(也可以@Query 写JPQL):

Page<City> findByNameAndCountryAllIgnoringCase(String name, String country, Pageable pageable);



最后,自动分页不支持使用@Query注解原生SQL。

lixin4
lixin4
大神大神 一语惊醒梦中人 找了一下午页码确实是从1开始的 -1 马上就好了
大_于
大_于
多谢多谢!使用的页面控件的页码确实是从1开始的,一语惊醒梦中人。
0
wuweiwuwei
wuweiwuwei

你继承的是Repository接口,你得自己实现分页的逻辑。

wuweiwuwei
wuweiwuwei
回复 @大_于 : 我没用过spring-boot,你提的问题应该说明使用了spring-boot的。
大_于
大_于
spring-boot似乎自动实现接口并管理实现对象的...看来这是spring-boot的bug了
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部