多くのマッピングアドバイスに対して多くの方向性があります!

StackOverflow https://stackoverflow.com/questions/2739207

  •  02-10-2019
  •  | 
  •  

質問

誰かが私を助けてくれるかもしれないなら、私は負傷しました。私は基本的に、ユーザーエンティティとクラブエンティティの間に多くのマッピング(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とロール列の追加とは別に)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top