1

車のデータを含む独自のテーブルがあります。

  • エントリーID
  • 車ID
  • 顧客ID
  • 車両年齢

私が望んでいるのは、すべての顧客の最新の車を手に入れることです。一般的なクエリを使用して、データを日付 DESC で並べ替えてから、顧客別にグループ化します。

基準を使用して、これを試しました:

session.createCriteria(Car.class)
    .addOrder(Order.desc("CarAge"))
    .setProjection( Projections.groupProperty("CustomerID"));

奇妙なことに、これは Car オブジェクトを返さず、顧客 ID のリストを返します。

4

1 に答える 1

2

Car オブジェクトは期待できません。

select * from Car group by customerId order by carAge desc;

上記の sqlquery はデータベースでも機能しません。以下は、Hibernate によって実行されるクエリです。

select customerId from Car group by customerId order by carAge desc;

他の列も必要な場合は、それをグループ プロパティとして追加すると取得されます。それ以外の場合は、すべての ID を取得し、データベースに再度クエリを実行して残りの値を取得します。それ以外の場合は、HQL を記述してサブクエリを作成し、特定の顧客 ID を返します。

于 2013-09-20T16:12:46.357 に答える