関連付けられたコレクションが に制限されている、理想的にはHibernate CriteriaまたはHQLであるクエリを作成したいと思いますが、これはSQLでこれを行う方法に興味があります です。たとえば、Kitesクラスへの双方向の1対多の関連付けを持つBoy クラスがあるとします。 私は、凧の長さが範囲内にある男の子のリストを取得したいと思います。関連するエンティティを制限するクエリ
問題は、私が知っているHQL /基準が唯一の少年は凧の完全な(無制限)に設定して オブジェクトこれら2つの の例で与えられるよう、(HQLは推測です)私を取得することです。私は、凧を持っている男の子は が正しい範囲にありますが、そのような男の子のためには全部の凧があります。 は範囲内のものではありません。今
select new Boy(name) from Boy b
inner join Kite on Boy.id=Kite.boyId
where b.name = "Huck" and length >= 1;
Criteria crit = session.createCriteria(Boy.class);
crit.add(Restrictions.eq("name", "Huck"))
.createCriteria("kites")
.add(Restrictions.ge("length", new BigDecimal(1.0)));
List list = crit.list();
私は正しいカイト長セットを取得する必要があります唯一の方法は、少年のリストを通って、範囲内のもののためにそれぞれ1再クエリ凧 のために反復する です。私はいくつかのSQL/HQL/Criteriaウィザード がより良い方法を知っていることを望んでいます。 実際の "ボーイ"コンストラクタにはかなりの引数があり、初期化されたボーイズを持たせると便利です のため、Criteriaソリューションを取得することをお勧めします。
私の基になるデータベースはMySQLです。 SQLまたはHibernateについてよく知っていると仮定しないでください。ありがとう! ...
ありがとう、これは素晴らしいですし、私は右の線に沿って考えを得た。 – Glenn