2012-01-23 1 views
6

私はビジネス上の要求が奇妙です。休止状態の複数の無関係なエンティティタイプを要求してページングする

エンティティのいくつかの基本情報をすべて唯一のフィールドでソートして、統一リストに表示する必要がある複数の無関係なエンティティタイプがあります(DATE)。これらのエンティティは、同じデータベース内にあってもいなくてもよい。結果セットはページング可能である必要があります。

Criteria、HQLなどでこれを実現する方法はありますかsaneを意味しますか?

答えて

4

通常はこれらのクラスはすべて共通の基底クラスを拡張し、多態性のHibernateクエリを使用します。あなたの説明から、これは実現可能ではないようです。

もちろん、Hibernateのやり方をしたいのであれば、無関係な各テーブルのサイズを最初に取得し、要求されたページのレコードがどのページにあるのか(あるいはいくつかのレコードがあるかもしれない)ページ。これは本当に面倒であり、間違いなくいくつかの深いDAOの下に隠されるべきです。

do only sane解決方法は、古くて良いSQLでUNIONであり、ネイティブクエリをドメインオブジェクトにマッピングしています。 Hibernateは、ネイティブクエリを非常にうまくサポートします。

+1

正しい - 共通の基底クラスはありません。 あなたの最初の提案は、私が今まで考えていた唯一の休止状態の方法であり、それはかなり見えません。これらの2つの方法のいずれかを選択する間の私の唯一の不確定性は、後でミックスに多くのエンティティを追加する際の保守性です。 – bvulaj