1

私が作業しているレイヤーのコードが CriteriaQuery オブジェクトを受け取るという問題があります。クエリに関するその他の情報は事実上ありません (クエリが返すオブジェクトのタイプまたはオブジェクト リストについては推測できます)。 .

私がやりたいことは、SELECT count(*) from ([CriteraQuery の SQL バージョン]) のようなものです。

新しい CriteriaQuery を作成し、CriteriaQuery パラメータをサブクエリとして使用しようとしましたが、その方法が見つかりませんでした。

CriteriaQuery を分解して適切な count() クエリを作成しようとしましたが、where 句のさまざまな部分を特定できませんでした。

CriteriaQuery から生成された TypedQuery から SQL ステートメントを取得する方法が見つかりませんでした。

したがって、次のようなものが不足しています。

long getCount(CriteriaQuery<?> query)
{
   return entityManager.createQuery(query).getResultList().size();
}

CriteriaQuery によって返されるオブジェクト/行の数を決定する方法はありますか?

これは、JPA 2 では、CriteriaQuery を使用して結果をカウントする方法とは異なります 。その質問は、CriteriaQuery を構築しているケースを扱います。この場合、構築された CriteriaQuery が与えられます (例: public int getCount( CriteriaQuery query ))。

4

0 に答える 0