0
通常のエンティティBeanを定義して、カラムがどこにあるのかわかります。ID
、FROM_ID
、TO_ID
、DATE
、およびMESSAGE
というテーブルがあります。私は、受信者(別名TO_ID
)が各ユーザから最新のメッセージを返す(すなわち、一意のそれぞれFROM_ID
の場合、最高のDATE
のレコードを返す)クエリを作成しようとしています。HQLでGROUP BYを使用するときにオブジェクトを返す方法は?
私が思い付いたクエリです:今
SELECT
m.id, m.fromId, m.toId, m.message, max(m.sharedDate),
FROM
Messages m
WHERE
m.toId = ?
GROUP BY
m.fromId
、私は戻ってそれらの列を取り、それらと豆を取り込むことができますが、Hibernateはそれを行う持つ方法はありますか?
ええ、実際の状況(質問に表示される単純化バージョンの代わりに)では、そのテーブルに永続化される2つの異なるクラス(基本クラスを共有する)があり、その結果が – ArtB
これを行うにはいくらか滑らかな方法があるかもしれませんが、手作業のテクニックでは、discriminatorカラム(またはタイプを区別するその他の値)を入れ、Object []を繰り返し処理し、正しいタイプベースその価値に – dlgrasse
は、エンティティBeanのいずれにもマッピングされていない場合、識別子の列を参照する方法はありますか?明らかに、次のようなものがあります: '特殊なプロパティクラスは、多態的な永続性の場合にインスタンスの識別子値にアクセスします。 'where' from 'cat cat where cat.class = DomesticCat' – ArtB