PaginationAndSortingRepository 返回空

Posted

技术标签:

【中文标题】PaginationAndSortingRepository 返回空【英文标题】:PaginationAndSortingRepository returning empty 【发布时间】:2018-05-21 12:47:17 【问题描述】:

我正在开发一个需要使用pagination 显示一些屏幕的应用程序。我从 Spring Data JPA 的 PaginationAndSortingRepository 开始。一切似乎都工作正常,但是当我执行代码时我无法获取数据,它在 Eclipse 控制台上返回空而没有任何错误。

以下是我的控制器代码:-

@RequestMapping(value="/monatsultimodata" , method=RequestMethod.Get)
public List<Monatsultimo> getData(Pageable pageable)
List<Monatsultimo> dataList = null ;
try
dataList= monatsultimoservice.getData(pageable)
catch(Exception e)
e.printStackTrace();

return dataList;

以下是我的服务代码:-

public List<Monatsultimo> getData(Pageable pageable)
List<Monatsultimo> tableData = new AarrayList();
monatsultimorepo.findAll(pageable)
return tableData;

以下是我的存储库代码:-

@Repository
public interface MonatsultimoRepo extends 
PagingAndSortingRepository<MonatSultimo, Integer>

下面是我的 application.yaml 文件

    jpa:
        properties:
            hibernate:
                format_sql: true
                show_sql: true
                type: 'debug'
                use_sql_comments: true
                ddl-auto:update
server:
        port: 9000

security:
    basic:
        enabled: false                                 

我用来访问 Rest 服务的 URL - localhost:9000/Add to dictionary?page=0&size=25

一切正常,直到它返回时没有数据。请帮助我,这几天我一直在努力。

提前谢谢..

【问题讨论】:

查看您的服务代码.. 在 stack-overflow 上提出此类问题之前..查看您的代码.. 【参考方案1】:

在返回tableData之前将monatsultimorepo.findAll(pageable)的结果赋值给tableData

服务:

 public List<Monatsultimo> getData()
   List<Monatsultimo> tableData = new AarrayList();
   tableData =monatsultimorepo.findAll()
   return tableData;
 

控制器:

@RequestMapping(value="/monatsultimodata" , method=RequestMethod.Get)
   public List<Monatsultimo> getData()
     List<Monatsultimo> dataList = null ;
     try
       dataList= monatsultimoservice.getData()
     catch(Exception e)
     e.printStackTrace();
   
   return dataList;
 

存储库:

@Repository
public interface MonatsultimoRepo extends JpaRepository<MonatSultimo,Integer>

【讨论】:

谢谢伙计,缺乏关注,花时间在这上面感觉很糟糕。但现在它给出了错误,无法从 Page 转换为 List 无法从 Page 转换为 List 因为monatsultimorepo.findAll(pageable)的返回类型是Page&lt;Monatsultimo&gt; 为什么不应该使用JpaRepository..只是改变你的repository代码..而不是PagingAndSortingRepository扩展JpaRepository..不要改变任何其他的东西 使用 JpaRepository 代替 PagingAndSortingRepository 有什么好处????【参考方案2】:

您好,在您的 Spring 应用程序中提供分页,我将应用以下更改:

控制器

import org.springframework.data.domain.PageRequest;
import org.springframework.web.bind.annotation.RequestParam;

@RequestMapping(value="/monatsultimodata", method=RequestMethod.Get)
public List<Monatsultimo> getData(final @RequestParam("page") int page, 
       final @RequestParam("size") int size)

       List<Monatsultimo> dataList = null;

       try
       
           dataList = monatsultimoservice.getData(new PageRequest(page, size));
        catch(Exception e)
       
           // Recommended output to a logger.
           e.printStackTrace();
       
       return dataList;

服务

返回的页面对象包含总页数等信息 - page reference。

import org.springframework.data.domain.Page;

public List<Monatsultimo> getData(final Pageable pageable)

    Page<Monatsultimo> page = monatsultimorepo.findAll(pageable);
    return page.getContent();

其他一切都将保持不变。

【讨论】:

以上是关于PaginationAndSortingRepository 返回空的主要内容,如果未能解决你的问题,请参考以下文章