0

HQL を使用して複数のエンティティをフェッチすることは可能ですか? 次のような多くのコードを書いていることに気づきました。

obj1 = HQL1;
if (obj1 == null)
  obj2 = HQL2;

したがって、条件が真の場合に、チェックを HQL クエリにフォールドobj1 == nullし、同時に obj2 をフェッチすることが可能かどうか疑問に思っています。

編集:

次のようなコードを検討してください。

Animal cat, dog = null;
cat = currentSession.createQuery("from Cat where id = 1").uniqueResult();
if (cat == null)
  dog = currentSession.createQuery("from Dog where id = 2").uniqueResult();

私の質問は、単一の HQL クエリを記述して両方 catdog同時にフェッチする方法があるかどうかです (もちろん、dog場合catにのみフェッチnullします)。

4

1 に答える 1

0

あなたの質問へのコメントで述べたように、あなたの質問には文脈がありません。だから答えにくい。

ポリモーフィック クエリを実行できます。これは Hibernate に固有のものであり、JPA の一部ではありません。

List animals = session.createQuery( "from Animal" ).list()

これにより、猫と犬の両方のすべての動物が返されます。

そこから、必要に応じて制限を作成できます。必要と思われるタイプの制限の問題は、サブクエリが必要になる可能性が高く、DB サーバーで非効率的なクエリ プランが発生する可能性があることです。

于 2013-05-25T15:35:02.517 に答える