[java][play framework]テーブルの最初(最後)のx行を取得

finderとpageを使って、並べ替えされたデータベースのうち最初(最後)の数行をArrayListで得る。

finderは次のようにmodelクラスで定義されてるとする。

    public static final Finder<Long,ModelClass> find =
        new Finder<Long,ModelClass>(Long.class, ModelClass.class);

createDateは次のように定義されているとする。

    @CreatedTimestamp
    public Date createDate;

作成日付の降順に並べ替えて、全てのカラムを取得

find.orderBy("createDate desc").findList();

descは降順の意味。省略した場合は古い順に並べ替える。

新しいカラム100行を、新しい順に取得

find.orderBy("createDate desc").findPagingList(100).getPage(0).getList();

PagingListによって、100行ごとにページ分けをし、そのうち1ページ目(インデックスは0)のリストを取得している。

カラム数が500行以上になったとき、超えた分のカラムを古い順に取得

int cols = ModelClass.find.findRowCount();
List<ModelClass> list = null;
if (cols > 500) {
    int over = cols - 500;
    list = find.orderBy("createDate").findPagingList(over).getPage(0).getList();
}

findRowCountでカラム数を取得できる。
500を超えた行数分だけの行が入るPageを作り、その1ページ目のリストを取得している。