2012-03-04 14 views
0

おはようございます。 Hibernateを学ぶには、条件を使って次のクエリを書く必要が生じました。フルーツショップとコミュニケーションの2つのエンティティがあります。多くのものか​​ら多くのものがあります。したがって、Fruit(id、name)、Shop(id、name)、ShopFruit(shop_id、fruit_id)の3つのテーブル(Java対応クラス)があります。それで、タンジェリンを売っている店舗のリストを取得する基準と同様に、前もって感謝します。私はあなたがそうのようなエイリアスを使用することができると思う"多対多"の関係にcriteriasを使用する方法は?

+0

[別の回答](http://stackoverflow.com/questions/264339/querying-manytomany-relationship-with-hibernate-criteria)を参照してください。 –

+0

これらのソリューションはHQLを使用しますが、Criteriaオブジェクトを使用するソリューションが必要です。 – user1166635

+0

ジョインテーブルに他の2つのエンティティに対する外部キー以外のものが含まれていない場合、ShopFruitエンティティは不要です。あなたはその文書を読んだことがありますか?何を試しましたか?この文書では何を理解していませんか? http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#querycriteria-associations –

答えて

0

List questions = session.createCriteria(Shop.class) 
    .createAlias("Fruits", "f") 
    .add(Restrictions.eq("f.name", "tangerine")) 
    .list(); 

this questionを参照してください。

<set name="stores" table="ShopFruit" cascade="all"> 
    <key column="fruit_id" /> 
    <many-to-many column="store_id" /> 
</set> 

は設定ストアとあなたのフルーツクラスを拡張:

class Fruit { 
    ... 
    Set<Store> stores; 
    ... 
} 

ます場合は、「みかん」をロードするよりも、しかし、私はあなたにもフルーツのためのあなたのHibernateマッピングで設定してこの問題を解決することができると思いますデータベースからフルーツオブジェクト、stores変数は、それを販売するすべての店を持つ必要があります。

関連する問題