2016-08-13 4 views
0

Play 2.2.6을 사용합니다. RawSql과 함께 'getTotalPageCount'를 가져오고 싶지만, 항상 한 페이지 레코드를 얻습니다.프레임 재생 RawSql 어떻게 얻을 수 있습니까? TotalPage

String sql = "select " 
      + "a.id as id ," 
      + "b.name as computerType ," 
      + "a.buy_time as buyTime ," 
      + "a.user_name as userName, " 
      + "a.if_use as ifUse from computer a left join computer_type b on a.computer_type = b.code where 1=1 "; 

    if(StringUtil.StringNoEmpty(vo.userName)){ 
     sql += " and a.user_name like '%"+vo.userName+"%'"; 
    } 

    if(StringUtil.StringNoEmpty(vo.computerType)){ 
     sql += " and a.computer_type = '"+vo.computerType+"'"; 
    } 
    if(null!=vo.startTime){   
     String startTime = DateUtil.formate.format(vo.startTime); 
     sql += " and a.buy_time >= '"+startTime+"'"; 
    } 

    if(null!=vo.endTime){ 
     String endTime = DateUtil.formate.format(vo.endTime); 
     sql += " and a.buy_time <= '"+endTime+"'"; 
    } 

    if(StringUtil.StringNoEmpty(vo.ifUse)){ 
     if("on".equals(vo.ifUse)){ 
      sql += " and a.if_use ='1' "; 
     }else if("off".equals(vo.ifUse)){ 
      sql += " and a.if_use = '0'"; 
     } 
    } 

    RawSql rawSql = RawSqlBuilder.parse(sql).create(); 

    Query<ResultComputer> query = Ebean.find(ResultComputer.class).order("id"); 
    query.setRawSql(rawSql); 

    Page<ResultComputer> page = query.findPagingList(10).setFetchAhead(false).getPage(0); 
    Logger.debug(page.getTotalPageCount()+""); // result 1. 

하지만 내 데이터베이스 천 개 레코드가 : 다음은 코드입니다. "page.getTotalPageCount()"는 100 페이지 레코드 여야한다고 생각합니다. 내 실수는 어디 갔지?

답변

0
public int getTotalPageCount(); 

은 반환 당신이 getPage(0)을 준 pages.Since의 총 수, 그것은 [(0에서 시작) 지정된 페이지 위치에 대한 페이지 -return getPage(0)] (1)를 반환합니다. 총 페이지 수를 원하면 pagingList을 가져 와서 getTotalPageCount();을 (를) 수행하십시오.