[Seasar-user:16672] Re: 一つのAutoSelectオブジェクトから2回の結果を取得する方法

Yasuo Higa [E-MAIL ADDRESS DELETED]
2009年 1月 14日 (水) 12:48:05 JST


ひがです。

> 縣です。
> 
> S2JDBCでページングを行おうとしています。
> 一つのAutoSelectオブジェクトからlimit/offsetを指定した検索結果と
> countを取得する方法はありますか?
> 
> 以下のようなコードでは正しいSQLが組み立てられずにエラーになりました。
> 
> SimpleWhere where = new SimpleWhere()
>   .excludesWhitespace()
>   .eq("code", condition.getCode())
>   .like("name", condition.getName());
> 
> AutoSelect<Employee> select =
>   jdbcManager
>   .from(Employee.class)
>   .where(where)
>   .orderBy("code");
> 
> List<Employee> empList = select.getResultList();
> int count = select.getCount(); // ここでエラーが発生
> 
> AutoSelectを2回作成すれば問題ないのですが、
> ページング時に定型的になるコードですので、
> 1回で済むなら楽だなーと思った次第です。
> 
AutoSelectを使いまわすことはできません。
AutoSelectを返すメソッドを用意して、
それを複数回呼ぶのがお勧め。

public AutoSelect<Employee> xxx(Condition condition) {
    SimpleWhere where = new SimpleWhere()
    .excludesWhitespace()
    .eq("code", condition.getCode())
    .like("name", condition.getName());

    return
      jdbcManager
      .from(Employee.class)
      .where(where)
      .orderBy("code");
}

List<Employee> empList = xxx().getResultList();
int count = xxx().getCount();

見たいな感じです。


Seasar-user メーリングリストの案内