0

HQLクエリ内で新しいオブジェクトを作成したい場所があります。また、新しいObjectコンストラクターで提供されるパラメーターの1つは、他のいくつかのオブジェクトのリストです。

例えば:

SELECT new Object1(a.id, new List(SELECT b FROM table2 AS b WHERE b.id>0)) FROM table1 AS a;

したがって、別のテーブルから取得したリストを持つObject1型のオブジェクトを取得することになります。

助けてください。

4

1 に答える 1

0

あなたが計画しているように、1つのステートメントでそれを行うことはできません。別の方法で考えてください。いくつかの可能性があります。

  1. Object1からtable1へ、Object2からtable2へのマッピングを作成します。Object1のマッピングでは、Object2への1対多の関係を作成します。この関係には、選択したwhere条件が含まれ"WHERE Object2.id>0"ます。次に、HQLステートメントのみが必要です"from Object1"
    これは最も素晴らしく、最も休止状態のスタイルの可能性ですが、where条件が常に同じである場合にのみ機能します。次に、table1とtable2の間にデータベース関係が必要です(これは例にはありませんが、おそらく存在し、例では忘れただけです)。

    また

  2. 最初にtable1のみをロードSELECT new Object1(a.id) FROM Table1 aしてから、このリストのすべての要素をループして、2番目のテーブルをロードし、FROM table2 b WHERE b.id>0それをObject1タイプの要素に配置します。

    また

  3. 最初にtable1をロードするだけで、Object1には、最初の呼び出しでtable2から要素のリストをロードするSELECT new Object1(a.id) FROM Table1 aメソッドがあります。getObject2List()

于 2012-09-12T14:32:53.507 に答える