2

非常に単純な一連のオブジェクトを持つようにマップされたオブジェクトがあります。ただし、私が本当にやりたいのは、そのマッピングにいくつかの基準を設定することです。現在のマッピングは次のとおりです。

    <set name="ops" inverse="true" cascade="all, delete-orphan">
        <key column="cityblock_id" on-delete="cascade"/>
        <one-to-many class="com.tamedtornado.data.Operation"/>
    </set>

ここで、関連するすべての op を取得するのではなく、完了していない、または完了している op だけを取得したいと考えています。Hibernate のドキュメントはこれについて非常に静かですが、いくつかの古いフォーラムの投稿が私に少し示しています。どうやら sql-query タグを使用できるようですが、それも私がやりたいことではありません。

HQLクエリでこれを行う方法はありますか? 単純なクエリで結果を絞り込み、active_ops や completed_ops などのいくつかのコレクション マップを作成したいだけです。

乾杯、ジェイソン

4

2 に答える 2

3

6.2未満。Hibernate ドキュメントのコレクション マッピングでは、任意のコレクション マッピングで WHERE 句を使用できることがわかります。

where (オプション) コレクションを取得または削除するときに使用する任意の SQL WHERE 条件を指定します (コレクションに使用可能なデータのサブセットのみを含める必要がある場合に役立ちます)

HQL Query を使いたいとおっしゃいましたが、それは可能ではないと思います。ただし、マッピングで単純な WHERE 句を指定するだけでよいため、HQL と「実際の」SQL の間に大きな違いはありません。

于 2009-01-11T11:29:29.680 に答える
0

あなたの質問を明確に理解しているかどうかはわかりませんが、SQLクエリでwhere句を使用する必要があるようです

HQLでwhere句を使用するか、Hibernateで基準APIを使用して、目的の結果を達成できる必要があります。

「アクティブ」または「完了」のステータスというフィールドがあるとすると、HQLは次のようになります。

from ops where status="active"

または基準APIを使用する場合:

List activeOperations = sess.createCriteria(Operation.class)
    .add( Restrictions.equals("status", "active") )
    .list();

hibernateチュートリアルの第14章と第15章では、これについて少し説明してい ます。http ://www.hibernate.org/hib_docs/v3/reference/en/html/index.html

于 2009-01-11T07:54:47.587 に答える