私はHibernate Criteriaに慣れておらず、この質問が単純すぎる場合はお詫びします...しかし、どんな助けでも大歓迎です!Hibernate Criteriaコレクションのプロパティ(サブクエリ?)
私は2つのエンティティCDとトラックを持っています。各CDにはトラックオブジェクトのコレクションがあります。各トラックには、 "title"という名前のStringフィールドがあります。今、私はHibernate Criteriaを使って、 "タイトル"が一定の値に設定されたトラックを持つすべてのCDを取得したいと思っています。私が今までに持っているのはこれです:
//session handling
Criteria cdCriteria = session.createCriteria(CD.class);
DetachedCriteria trackCriteria = DetachedCriteria.forClass(Track.class);
trackCriteria.add(Restrictions.eq("title", "SomeTitle"));
trackCriteria.setProjection(Projections.property("title"));
criteria.add(Subqueries.exists(trackCriteria));
List<CD> cds = criteria.list();
これはトラックのタイトルに関係なくすべてのCDを返します。誰か提案はありますか?
ありがとうございます。
ありがとう!私は、あなたの最後のソリューションをジョインで動かすことができました。他の2つは、マッピング例外で失敗します。Unknown entity:null "track.cd"のために、 "cd"はTrackのフィールドではないためです。関係は、CDからトラックのみの方向性です。または私はここで間違っていますか? – user1119371
いいえ、そうです。私はアソシエーションが双方向で、トラックにcdフィールドがあると仮定しました。 –
サブクエリを使用して解決することは不可能ですか?アサーションは双方向ではないので、唯一の方法はジョインを使うことです。 – user1119371