私はテーブルを持っています - これはAAAと呼ばれ、追加のテーブルに1対多の定義を持ち、BBBが割り当てられています。それはそのようになります。メインレコードからのリストベースのレコードへのアクセス
public class AAA
{
...
@OneToMany(orphanRemoval=true, fetch=FetchType.LAZY, mappedBy="aaa")
private List<BBB> bbbs;
...
}
は、私は私に1 BBBs以上のものを持っているすべてのAAASを与えるJPAクエリを実行したいので、私はSIZE(aaa.bbbs)
を使用しました。しかし、私は結果セットが各aaaの最初のbbbのタイムスタンプによって順序付けされることを望みます。
実際の例:自分のプロフィールに追加した最新の写真で注文したすべてのFacebook友だちを取得したいと思います。この場合のAAAは「フレンド」であり、BBBは「ピクチャ」になり、Picture.CreatedTimestampで友達を注文したいと考えています。
私は基本的に、各aaaのbbbsの最初の項目にアクセスし、それによって注文する必要があります。その目標を達成するためには何をすべきか?最新のタイムスタンプを見つけるために、1のサイズを決定し、他にする - あなたは休止状態を使用している場合
構文は正しいですか? 「GROUP BY」はJPAでは機能しません。 MySQLではPostgreSQLを使用していて、汎用JPAソリューションを探しています。 –
@Eldad: 'GROUP BY'はJPAで動作します。これは完全に有効なJPAクエリです。 – axtavt
JPAのドキュメントをさらにチェックすると、正しいと思われますが、実際には動作しません(私はHibernateを使用しています)。あなたのクエリを使用しようとすると例外が発生します: "エラー:列" aaa.some_aaa_column "は、GROUP BY句に表示するか、集計関数で使用する必要があります"。 –