私が作業しているレイヤーのコードが 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 ))。