12

「グループ化」を使用して基準クエリを作成し、すべての列を返したいと考えています。

プレーン SQL は次のようになります。

select * from Tab group by client_name order by creation_time;

行数があることを理解していcount(distinct client_name)ます。

適切な結果が得られないように見える現在のクエリは次のとおりです。

Criteria criteria = getSession(requestType).createCriteria(Tab.class);
        criteria.setProjection(Projections.projectionList().add(Projections.groupProperty("client_name")));
        criteria.addOrder(Order.asc("creationTime"));

このクエリは"client_name"のみを返します。すべての列名を手動で入力したくありません。何か方法があるに違いない、何ができるだろうか?

4

4 に答える 4

0

あなたは何かを誤解していると思います。SQL を使用している場合はGROUP BY、選択したすべての列でグループ化する必要があります。groupProperty同じことが Hibernateにも当てはまりProjectionます。他の列/フィールドが参照されていない場合、それらもグループ化する必要があるため、Hibernate はそれらが不要であると想定します。

一歩後退するには:あなたは何をしようとしていますか?テーブル内のすべての列でデータが重複している場合は、データが正しくないか、データが正しく保持されていない可能性があります。少なくとも、あなたの鍵は台無しになるでしょう。

于 2012-12-23T15:00:47.863 に答える
0

休止状態のプロジェクションを使用する場合、プロジェクション リストに必要なすべての列を追加する必要があります。Projections.projectionList().add(Projections.groupProperty("client_name")) のみを使用しました

これ 。したがって、client_name のみを返すことは明らかです。

于 2015-04-17T04:40:53.560 に答える