Hibernateでカスタムクエリベースのコレクションマッピングを行う方法は?
質問
オブジェクトのセットを持つようにマップされたオブジェクトがありますが、非常に単純です。しかし、私が本当にやりたいのは、そのマッピングにいくつかの基準を置くことです。現在のマッピングは次のとおりです。
<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などのコレクションマップをいくつか用意したいだけです。
乾杯、 ジェイソン
解決
6.2の下。 Hibernateドキュメントのコレクションマッピングでは、コレクションマッピングでWHERE句を使用できることがわかります。
where(オプション)コレクションを取得または削除するときに使用する任意のSQL WHERE条件を指定します(コレクションに利用可能なデータのサブセットのみを含める場合に便利です)
HQLクエリを使用したいと言ったが、それは可能だとは思わない。ただし、マッピングで単純なWHERE句を指定するだけでよいため、HQLと&quot; real&quot;の違いはあまりありません。 SQL。
他のヒント
質問を明確に理解しているかどうかはわかりませんが、SQLクエリでwhere句を使用する必要があるようです
HQLでwhere句を使用するか、Hibernateで基準apiを使用して、目的の結果を達成できる必要があります。
&quot; active&quot;のstatusというフィールドがあるとします。または「完了」 HQLは次のようになります。
from ops where status="active"
または条件APIを使用する場合:
List activeOperations = sess.createCriteria(Operation.class)
.add( Restrictions.equals("status", "active") )
.list();
休止状態のチュートリアルの第14章と第15章では、これについて少し説明しています。 http://www.hibernate.org/hib_docs/v3/ reference / en / html / index.html