多くのマッピングアドバイスに対して多くの方向性があります!
質問
誰かが私を助けてくれるかもしれないなら、私は負傷しました。私は基本的に、ユーザーエンティティとクラブエンティティの間に多くのマッピング(userclubsと呼ばれる参加テーブルを介して)のために何をグーグル(またはその他のアイデア)のために何をしようとしていますか? userclubsでは、user.getclubs()を呼び出すときに役割を表しているため、どのレベルアクセスがあるかを解決することもできます。 Hibernateを使用してこれを行う賢い方法はありますか、それともデータベース構造を再考する必要がありますか?助けてくれてありがとう(またはここまで読んでくれている!!)
user.hbm.xmlは少し似ています
<set name="clubs" table="userClubs" cascade="save-update">
<key column="user_ID"/>
<many-to-many column="activity_ID"
class="com.ActivityGB.client.domain.Activity"/>
</set>
Activity.hbm.xmlパーツ
<set name="members" inverse="true" table="userClubs" cascade="save-update">
<key column="activity_ID"/>
<many-to-many column="user_ID"
class="com.ActivityGB.client.domain.User"/>
</set>
現在のUSERCLUBSテーブルには、フィールドID |が含まれていますuser_id | Activity_id
そこにIDに含めたい| user_id | Activity_id |役割
そして、両側の役割にアクセスできるようになりました...
解決
最も簡単な方法は、参加テーブルからエンティティを作成することです。
クラブとユーザーエンティティに2つの外部キーをIDとして使用できます(使用するu003Ccomposite-id>)、しかし、私はテクニカルID列を追加することをお勧めし、外国の鍵に独自の制約を設定するだけです(そうでなければ、クラブやユーザーを保存しないときのカスケードは機能しません。詳細はこちら: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-compositeid).
新しいエンティティのuserclubに名前を付ける場合、ユーザーからUserCLUB、クラブ、UserCLUBから1対1の、およびUSERCLUBからClub、およびUserCLUBからユーザーまでの1対1が必要です。
Javaコードではリファクタリングを行う必要がありますが、DBを変更する必要はありません(IDとロール列の追加とは別に)。