2

誰かが私を助けることができるかもしれないなら、私は負傷しました。私は何をグーグルで検索するか(または他のアイデア!!)を考えようとしています基本的に私はユーザーエンティティとクラブエンティティの間の双方向の多対多のマッピングを持っています(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 | 役割

両側の役割にアクセスできるようになります...

4

1 に答える 1

1

最も簡単な方法は、結合テーブルからエンティティを作成することです。

クラブとユーザーエンティティへの2つの外部キーをIDとして使用できます(<composite-id>を使用)が、テクニカルID列を追加し、外部キーに一意の制約を設定することをお勧めします(そうでない場合はカスケードクラブを保存すると、ユーザーは機能しなくなります。詳細はこちら:http ://docs.jboss.org/hibernate/core/3.3/reference/en/html/mapping.html#mapping-declaration-compositeid )。

新しいエンティティにUserClubという名前を付ける場合は、UserからUserClub、ClubからUserClubに1対多、UserClubからClub、UserClubからUserに多対1が必要になります。

Javaコードで行うリファクタリングがいくつかありますが、dbを変更する必要はありません(id列とrole列の追加は別として)。

于 2010-04-29T23:48:04.437 に答える