2011-10-25 1 views
0

複数のテーブル間でマッピングを解決することができます。ここでテーブル間でHibernateマッピング(可能なJOIN関係)

は一例です:

  • クラスメーカー、テーブルメーカー
  • クラスカー、
  • CarTypeテーブルCARクラス、テーブルCAR_TYPE

ORMモデル

  • MANUFACTURER 1対多のCAR(MANUFACTURER_IDテーブルのCARで_FK)
  • CAR私が欲しい1 CAR_TYPE(テーブルCARでCAR_TYPE_ID_FK)

の多くは、特定のメーカーのために、すべての車種を解決しますマッピングを休止状態にありますか?私はすべての車を取得したい場合

だから、私は必要なもの

 <set name="cars" inverse="true" cascade="all,delete-orphan" lazy="false" > 
     <key property-ref="manufacturerIdFk"> 
      <column name="MANUFACTURER_ID_FK " precision="22" scale="0" not-null="true"/> 
     </key> 
     <one-to-many class="foo.bar.Car" /> 
    </set> 

を記述し、製造業者のための車の種類を取得する方法ですか?

<set name="carTypes" inverse="true" cascade="all,delete-orphan" lazy="false" > 
    ??? 
</set> 

はありがとうと私は実装したいと思いますどのようなソリューションは、完全に本当にHibernateマッピングの「力仕事」を行うために必要があります:)ちょうど答える「車」からそれを取得しないでください。再度、感謝します。

+1

』私は完全に本当にHibernateマッピングに行うためにすべき実装したいと思い何ソリューション」 'manufacturer.cars'リストをループする' Manufacturer'に 'getAllCarTypes()'メソッドを追加するのが一般的なアドバイスかもしれないという理由があります。 'carType'を二重にマッピングすると、挿入時にエラーが発生する可能性があります。 –

答えて

0

関連テーブルCARに基づいて、manufacturer.carTypesコレクションをManyToMany関係として直接マップできます。ここで

は、例えば、(注釈)である:「 『 クラスのメーカーで

@ManyToMany(fetch = FetchType.LAZY) 
@JoinTable(name = "CAR", joinColumns = @JoinColumn(name = "MANUFACTURER_ID_FK"), 
inverseJoinColumns = @JoinColumn(name = "CAR_TYPE_ID_FK")) 
private Set<CarType> carTypes; 
重い物を持ち上げる
+0

ありがとう、XMLマッピングが必要なので、試してみることにします。私は大きなプロジェクトに取り組んでおり、恐れているアノテーションマッピングはオプションではありません。 –

+0

' ' –

+0

このように動作させることはできませんが、まだトラフブックを調べて読んでいます。私は時間の危機に瀕しているので私は恐れています。私は単純なソリューションでこの "Car"オブジェクトのロードと私が必要とするものを抽出するだけで行かなければなりません。助けてくれてありがとう、それは私のためのトリックをしなかった場合でも私は答えを受け入れるだろう。 –

関連する問題