編集: jOOQ のバージョン 1.6.8 を使用します。新しいバージョンではこれが機能するはずです(回答を参照)
Jooq
ページング、ソートなどでデータのフェッチを処理するために使用するJava Webアプリケーションのグリッドモデルを作成しています...
最初に select を作成し、factory.select(...)
これ ( SelectConditionStep
) をパラメーターとして gridmodel に渡します。ここで、必要なベースのパラメーターを追加.limit()
し.orderBy()
ます。
しかし、私の問題は、ページの合計を計算するために、結果の合計数 (1 ページだけでなく) も知る必要があることです。だから私の質問は、与えられたからカウントクエリを作成することが何らかの方法で可能かどうかSelectConditionStep
です。
これをカウントクエリのサブクエリとしてラップすることを考えました。何かのようなもの:
(アイデアを示すためだけに、機能しません)
factory.select(count()).from(selectConditionStep)...
MySQL では、次のようにします。
select count(*) from (select ...) as r
私が持っている現在のコード:
private final SelectConditionStep selectStep;
...
@Override
public int getAvailableRows() {
JooqSelect select = new JooqSelect() {
@SuppressWarnings("unchecked")
protected Result<Record> select(Connection connection) throws SQLException {
Factory create = new Factory(connection, dialect);
create.attach(selectStep);
/* This does not compile, just to show what I need */
return create.select(count()).from(selectConditionStep).fetch();
}
};
session.doWork(select);
/* Get result */
return select.getResult()...;
}