1
私は3つのテーブル:Band、BandGenre、Genreを持っています。Hibernate - Jointableを使ってテーブルを結合する
今はBandをBandGenreに参加させ、BandGenreをGenreに参加させています。これは少し多いようです。私は、Hibernateが結合テーブルを見つけることができる様々な場所(ここを含む)を読んだことがありますが、どうやってそれを行うのか分かりません。
Band.hbm.xml
<class name="com.myProject.hibernate.Band" table="Band">
<id name="bandid">
<generator class="increment"/>
</id>
<property name="name"/>
<set name="bandGenres" lazy="false">
<key column="bandid"/>
<one-to-many class="com.myProject.hibernate.BandGenre"/>
</set>
</class>
BandGenre.hbm.xml(jointable)
<class name="com.myProject.hibernate.BandGenre" table="BandGenre">
<id name="bandgenreid">
<generator class="increment"/>
</id>
<property name="bandid"/>
<property name="genreid"/>
<one-to-one name="genre" class="com.myProject.hibernate.Genre">
<!-- the <formula> gets Hibernate to join Genre on BandGenre.genreid (rather than BandGenre.bandgenreid) -->
<formula>genreid</formula>
</one-to-one>
</class>
Genre.hbm.xml:
だからここに私のhbm.xmlファイルです
私のBaを取得するにはGenreに直接参加することができます(できればparentidで注文できます)。
コードを使用すると、「リソースcom/bandbrokers/hibernate/Band.hbm.xmlのマッピングドキュメントを解析できませんでした」 - 「属性」列は、要素型「1対多」の宣言が必要です。 。 もちろん、あなたのコードのように "column"属性が設定されています。 – laughingbovine
私はHibernate 3.2を使用していましたが、3.6.5.Finalにアップグレードされましたが、今でも同じエラーが発生しています。 – laughingbovine
私の悪いです。バンドが本当に1つのジャンルだけを持つことができれば(複数のジャンルではなく)、「一意=真」で「多対多」を持たなければなりません。回答は修正されました。 –