1

複数のクラスに共通のHQLがあります

Query query = session.createQuery("select id, name from " + hibernateClass.getClass().getName());

query.list();を返しますList<Object[]>。これで、クエリの出力は同じ構造、つまりaLong idとaになりString nameます。したがって、このコンテンツをクラスに配置して、呼び出すときにすべてがリストにコピーされ、新しいオブジェクトquery.list()を作成してデータを設定する必要がないようにすることは可能ですか。List

4

1 に答える 1

2

同様の結果につながる可能性がいくつかあります(List<NewClass>プロパティIDと名前だけを持つNewClassで結果を取得したいとします):

1)あなたはしますcreateQuery("select new NewClass(id, name) from " + hibernateClass.getClass())

2)同じデータベーステーブルに対してNewClassの新しいマッピングファイルを作成しますが、プロパティidとnameのみを使用すると、クエリは次のようになります。createQuery("from " + NewClass.class)

3)あなたはただそうするだけcreateQuery("from " + hibernateClass.getClass())で、ロードされた場所での余分な値については気にしません。必要な列のみをロードする場合と比較して、すべての列をロードするための余分な時間は重要ではありません。必要に応じて、それでもクラスまたはインターフェイスNewClassおよびforを作成できますHibernateClass extends/implements NewClass

私個人的には3)が好きですが、それはあなたの好み次第です。

于 2012-04-27T14:34:35.653 に答える